【问题标题】:Sinatra app 404's when deployed to Heroku部署到 Heroku 时的 Sinatra 应用程序 404
【发布时间】:2014-07-15 22:48:56
【问题描述】:

我正在使用一个应用程序并希望部署到 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

【问题讨论】:

    标签: ruby heroku sinatra rack procfile


    【解决方案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
    

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

    【讨论】:

    • 好收获!就是这样。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-30
    • 1970-01-01
    相关资源
    最近更新 更多