【问题标题】:Unicorn w/ Sinatra error Rack::Lint::LintError: Status must be >=100 seen as integerUnicorn w/ Sinatra 错误 Rack::Lint::LintError: Status must be >=100 seen as integer
【发布时间】: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,但我不明白为什么?没有这个,其他路线也可以工作。在本地,没有独角兽也可以。

标签: ruby sinatra unicorn


【解决方案1】:

试试这个 hack 的 Lint:

module Rack
  class Lint
    def assert message, &block
    end
  end
end

它帮助我处理瘦的异步请求

【讨论】:

    猜你喜欢
    • 2012-08-30
    • 2012-07-21
    • 2012-08-14
    • 2011-12-03
    • 1970-01-01
    • 2020-01-20
    • 1970-01-01
    • 2020-07-24
    • 1970-01-01
    相关资源
    最近更新 更多