views:

61

answers:

3

I'm trying to get my Heroku app to run using the bamboo-mri-1.9.2 stack. Of course it's running fine locally on Ruby 1.9.2. But when on production it crashes during the startup on executing config.ru which looks like this:

require 'sinatratestapp'
run Sinatra::Application

My .gems file:

sinatra --version '>= 1.0'

And the application itself as sinatratestapp.rb:

require 'rubygems'
require 'sinatra'

get '/' do
  "Hello from Sinatra on Heroku!"
end

That's all I've got in the project and trying to run that on Heroku results:

<internal:lib/rubygems/custom_require>:29:in `require': no such file to load -- sinatratestapp (LoadError)
        from <internal:lib/rubygems/custom_require>:29:in `require'
        from config.ru:1:in `block (3 levels) in <main>'
        ...
-----> Your application is requiring a file that it can't find.

       Most often this is due to missing gems, or it could be that you failed
       to commit the file to your repo.  See http://docs.heroku.com/gems for
       more information on managing gems.

       Examine the backtrace above this message to debug.

I've tried to do as it guides but as a Ruby noob my examinations have resulted nothing.

A: 

My Sinatra projects have the same layout and look about the same, the only difference is that in my .gems file I do not specify a version.

my .gems looks like this:

sinatra
hpricot
agentargo
Didn't help. Are you also on `bamboo-mri-1.9.2` stack?
hleinone
A: 

I believe I ran into this problem when experimenting with Sinatra. Ruby 1.9 doesn't include the current directory in the path by default, so you have to implicitly state require 'sinatratestapp' in our config.ru file.

Joost Schuur
+2  A: 

By the help of Heroku support request and this question I found out the solution.

Ruby 1.9.2 doesn't automatically include "." in the $LOAD_PATH. To workaround this, modify config.ru by stating require './sinatratestapp' instead of require 'sinatratestapp'.

hleinone