AFr*_*ser 20 ruby rack ruby-on-rails
我正在浏览tekpub机架教程但是当我尝试在机架中运行一个基本程序时我得到了这个错误.
ERROR Rack::Lint::LintError: Response body must respond to each
/Users/adam/.rvm/gems/ruby-1.9.3-preview1/gems/rack-1.3.4/lib/rack/lint.rb:19:in `assert'
/Users/adam/.rvm/gems/ruby-1.9.3-preview1/gems/rack-1.3.4/lib/rack/lint.rb:513:in `each'
/Users/adam/.rvm/gems/ruby-1.9.3-preview1/gems/rack-1.3.4/lib/rack/body_proxy.rb:23:in `method_missing'
/Users/adam/.rvm/gems/ruby-1.9.3-preview1/gems/rack-1.3.4/lib/rack/chunked.rb:23:in `each'
/Users/adam/.rvm/gems/ruby-1.9.3-preview1/gems/rack-1.3.4/lib/rack/handler/webrick.rb:71:in `service'
/Users/adam/.rvm/rubies/ruby-1.9.3-preview1/lib/ruby/1.9.1/webrick/httpserver.rb:138:in `service'
/Users/adam/.rvm/rubies/ruby-1.9.3-preview1/lib/ruby/1.9.1/webrick/httpserver.rb:94:in `run'
/Users/adam/.rvm/rubies/ruby-1.9.3-preview1/lib/ruby/1.9.1/webrick/server.rb:191:in `block in start_thread'
Run Code Online (Sandbox Code Playgroud)
这是我试图运行的程序:
class EnvironmentOutput
def call(env)
["200",{"Content-Type" => "text/plain"}, "Hello World"]
end
end
run EnvironmentOutput.new
Run Code Online (Sandbox Code Playgroud)
我是初学程序员,所以我不确定它是怎么回事.尝试谷歌搜索但没有任何结果.
使用ruby 1.9.3 Rack 1.1
谢谢
小智 39
这是Ruby 1.9.2中的一个变化,正如所建议的那样,如果用["括号"]包围你的字符串,它会将"Hello World"变成一个具有单个值的数组.听起来很傻,但这就是交易:).
过去,Ruby中的String会通过迭代的字符来响应每个字符串.显然,这种方式有所改变.
也许你可以试试这个.
require 'stringio'
class EnvironmentOutput
def call(env)
["200",{"Content-Type" => "text/plain"}, StringIO.new("Hello World")]
end
end
run EnvironmentOutput.new
Run Code Online (Sandbox Code Playgroud)
根据机架规格,机身必须只产生弦,但不能是弦本身.具体说明未能这样做将不适用于1.9.我在这里做的是将字符串体包装在StringIO实例中.StringIO的作用类似于文件句柄并返回字符串输出.
归档时间: |
|
查看次数: |
8267 次 |
最近记录: |