0

我正在尝试构建基于机架的 ruby​​ 应用程序,但我还是新手,我正在使用 ruby​​ 1.9.2 -p180

在我的 config.ru 文件中,我有:

require "rack"
require "./my_app.rb"
require "./auth.rb"

use Auth
run MyApp.new

现在中间件身份验证的主要问题,简单地说,如果请求的参数少于 2 个,我希望它不要继续 MyApp 并且只打印出一些东西(仅用于测试):

class Auth

  def initialize(app)
    @app = app
  end

  def call(env)     
    request = Rack::Request.new(env)
    if request.params.count < 2
        ["200",{"Content-Type" => "text/plain"}, ["Hello World"]]
        puts 'Working .. '
    else 
        @app.call(env)
    end
  end
end 

现在当我运行我的机架应用程序时:

rackup -s thin config.ru

并尝试得到结果:

curl http://localhost:9292/

我不断收到以下错误:

Rack::Lint::LintError: Status must be >=100 seen as integer
/Users/Apple/.rvm/gems/ruby-1.9.2-p180/gems/rack-1.4.1/lib/rack/lint.rb:19:in `assert'
/Users/Apple/.rvm/gems/ruby-1.9.2-p180/gems/rack-1.4.1/lib/rack/lint.rb:425:in `check_status'

当然,如果我以生产模式运行它,我将不会收到此错误。

任何帮助将不胜感激。

4

1 回答 1

2

尝试使用整数作为状态:

[200,{"Content-Type" => "text/plain"}, ["Hello World"]]

代替:

["200",{"Content-Type" => "text/plain"}, ["Hello World"]]
于 2012-09-05T17:26:59.640 回答