Heroku app无法启动 - “require”:没有要加载的文件 - sinatratestapp(LoadError)

时间:2010-10-20 00:02:08

标签: ruby heroku sinatra

我正在尝试使用bamboo-mri-1.9.2堆栈运行我的Heroku应用程序。当然它在Ruby 1.9.2上运行良好。但是在生产时它会在启动时崩溃,执行config.ru,如下所示:

require 'sinatratestapp'
run Sinatra::Application

我的.gems文件:

sinatra --version '>= 1.0'

应用程序本身为sinatratestapp.rb

require 'rubygems'
require 'sinatra'

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

这就是我在项目中的所有内容,并尝试在Heroku上运行该结果:

<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.

我试图按照它的指导去做,但作为一个Ruby noob,我的考试没有任何结果。

5 个答案:

答案 0 :(得分:38)

在Heroku支持请求和this question的帮助下,我找到了解决方案。

Ruby 1.9.2不会自动包含“。”在$ LOAD_PATH中。要解决此问题,请通过声明config.ru而不是require './sinatratestapp'来修改require 'sinatratestapp'

答案 1 :(得分:3)

您可以在config.ru文件中添加以下行,它也可以解决问题。这也将适用于应用范围,因此它将带回1.9.2之前的行为感觉:

$ LOAD_PATH.unshift(Dir.getwd)

注意:我无法在Heroku上进行测试

我的问题:使用没有Gemfile,config.ru或config / unicorn.rb的(ruby&lt; 1.9.2)sinatra应用程序让独角兽行为正常。

答案 2 :(得分:1)

我相信在尝试使用Sinatra时遇到了这个问题。默认情况下,Ruby 1.9不包含路径中的当前目录,因此您必须在require 'sinatratestapp'文件中隐式声明config.ru

答案 3 :(得分:0)

感谢您的提示。 Heroku帖子http://blog.heroku.com/archives/2009/3/5/32_deploy_merb_sinatra_or_any_rack_app_to_heroku/

中没有提及.gems文件

答案 4 :(得分:-1)

我的Sinatra项目具有相同的布局并且看起来大致相同,唯一的区别是在我的.gems文件中我没有指定版本。

我的.gems看起来像这样:

sinatra
hpricot