Sinatra app 404部署到Heroku时

时间:2014-07-15 22:48:57

标签: ruby heroku sinatra rack procfile

我正在使用应用程序并希望部署到heroku。完整来源here

我看到的主要错误是

heroku[router]: at=info method=GET path="/" host=cheesyparts.herokuapp.com request_id=25d2dbb5-e13a-4146-bb3a-9386f997c44c fwd="54.234.191.55" dyno=web.1 connect=2 service=3 status=404 bytes=417

当我尝试通过foreman发出同样的问题时,我发生了同样的问题。但是,如果我使用ruby parts_server_control.rb run,我可以启动服务器并运行它。任何提示都表示赞赏。

config.ru看起来像这样

require './parts_server'
run Sinatra::Application

,控制脚本parts_server_control.rb如下所示:

require "bundler/setup"
require "daemons"
require "pathological"
require "thin"

Daemons.run_proc("parts_server", :monitor => true) do
  require "parts_server"

  Thin::Server.start("0.0.0.0", PORT, CheesyParts::Server)
end

1 个答案:

答案 0 :(得分:1)

控制脚本正在运行应用类CheesyParts::Server,但您的config.ru(由foreman和Heroku使用)假设应用程序以经典样式编写并正在使用该类Sinatra::Application。请参阅Sinatra docs on modular and classic application styles。由于Sinatra::Application没有添加任何内容,因此它是一个“空”应用,因此任何路由都会出现404错误。

修复方法是更改​​行

run Sinatra::Application

config.ru

run CheesyParts::Server

这样该类将被用作主应用程序。