在heroku上部署简单的ruby sinatra应用程序的问题

时间:2011-07-03 03:18:30

标签: ruby heroku

我是ruby,git和heroku的新手。我试图构建一个简单的Hello World应用程序并将其部署在heroku上。当我尝试使用heroku提供的URL访问站点时,我在日志中看到以下错误。你能告诉我我做得不对吗。

    2011-07-03T01:15:06+00:00 app[web.1]:   from /usr/ruby1.9.2/lib/ruby/gems/1.9.1/gems/rack-1.1.0/lib/rack/builder.rb:46:in `instance_eval'
    2011-07-03T01:15:06+00:00 app[web.1]:   from /usr/ruby1.9.2/lib/ruby/gems/1.9.1/gems/rack-1.1.0/lib/rack/builder.rb:46:in `initialize'
    2011-07-03T01:15:06+00:00 app[web.1]:   from /home/heroku_rack/heroku.ru:1:in `new'
    2011-07-03T01:15:06+00:00 app[web.1]:   from /home/heroku_rack/heroku.ru:1:in `<main>'
    2011-07-03T01:15:06+00:00 app[web.1]:   from /usr/ruby1.9.2/lib/ruby/gems/1.9.1/gems/thin-1.2.6/lib/rack/adapter/loader.rb:36:in `eval'
    2011-07-03T01:15:06+00:00 app[web.1]:   from /usr/ruby1.9.2/lib/ruby/gems/1.9.1/gems/thin-1.2.6/lib/thin/controllers/controller.rb:175:in `load_rackup_config'
    2011-07-03T01:15:06+00:00 app[web.1]:   from /usr/ruby1.9.2/lib/ruby/gems/1.9.1/gems/thin-1.2.6/lib/rack/adapter/loader.rb:36:in `load'
    2011-07-03T01:15:06+00:00 app[web.1]:   from /usr/ruby1.9.2/lib/ruby/gems/1.9.1/gems/thin-1.2.6/lib/thin/controllers/controller.rb:65:in `start'
    2011-07-03T01:15:06+00:00 app[web.1]:   from /usr/ruby1.9.2/lib/ruby/gems/1.9.1/gems/thin-1.2.6/lib/thin/runner.rb:177:in `run_command'
    2011-07-03T01:15:06+00:00 heroku[web.1]: Process exited
    2011-07-03T01:15:07+00:00 heroku[web.1]: State changed from starting to crashed

config.ru文件

    require 'myapp2'
    run Sinatra::Application

myapp2.rb

    require 'rubygems'
    require 'sinatra'

    get '/' do
    'Hello World'
    end

1 个答案:

答案 0 :(得分:4)

您错过了堆栈跟踪的顶部,但看起来问题是require

config.ru更改

require 'myapp2'

require './myapp2'

require File.expand_path("../myapp2", __FILE__)

Ruby 1.9.2在加载路径中不再有当前目录,因此require 'myapp2'无法找到位于同一目录中的应用程序文件。

如果这在你的本地机器上运行,但在Heroku上没有,那么你很可能使用不同版本的Ruby,可能是1.8.7。在本地安装1.9.2是个好主意,这样你就可以在开发和生产中使用相同的版本。或者你可以改变你正在使用的Heroku堆栈;看看the Heroku stack docs