【发布时间】:2015-11-08 13:47:14
【问题描述】:
我正在使用 sinatra 创建一个简单的应用程序,并且正在使用 unicorn 进行部署。
在本地使用 ruby webserver.rb 可以完美运行,但在生产服务器上,使用 unicorn(不带 -D)执行时,调用特定的发布路由时会引发错误:
post '/save-preset' do
preset = Preset.create_new params['preset_name'], params['data']
session[:flash] = 'Preset Saved'
{id: preset.id}.to_json
end
错误是:
Rack::Lint::LintError: Status must be >=100 seen as integer
/usr/local/rvm/gems/ruby-2.2-head/gems/rack-1.5.5/lib/rack/lint.rb:20:in `assert'
我知道操作的逻辑正在执行,因为我在我的数据库上以一个新条目结束。
这在本地也可以正常工作。
我在互联网上搜索过这个错误,但只发现它与其他 ruby 网络服务器有关,在我看来响应的 http 状态无效,但我没有指定它其他路线(甚至其他POST)它工作得很好。
【问题讨论】:
-
解决此问题的一种方法是在路由上添加
status 200,但我不明白为什么?没有这个,其他路线也可以工作。在本地,没有独角兽也可以。