我创建了一个使用Mechanize gem的Sinatra应用程序。它在本地运行良好,但是当我将它部署到Heroku时,它告诉我
at=error code=H10 desc="App crashed" method=GET path="/" fwd="83.245.232.99" dyno= connect= service= status=503 bytes=
即使是这个最小化的代码:
require "sinatra"
require "rubygems"
require "mechanize"
get '/' do
"hi"
end
出了什么问题?
答案 0 :(得分:1)
这可能是原因。
HTTPClient定义了一个名为HTTP的模块。默认情况下,Sinatra按顺序查找名称空间名称为HTTP和WEBrick的Rack处理程序。
由于已经定义了HTTP命名空间,因此Sinatra实际上认为它是一个Rack处理程序。我认为这是Sinatra的一个错误。它应检查处理程序在使用之前是否响应运行。
无论如何,修复是使用Thin,或者如果你想使用WEBrick,那么明确告诉Sinatra跳过自动机架检测:
设置:服务器,' webrick' 这将阻止Sinatra认为HTTPClient HTTP模块是Rack处理程序。
来自here
答案 1 :(得分:0)
出于某种原因需要
set :server, 'webrick'
在我的 app.rb 中与Mechanize一起运行,没有错误。