我正在使用应用程序并希望部署到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
答案 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
这样该类将被用作主应用程序。