为什么机架响应体不是字符串?

时间:2012-05-08 03:29:57

标签: ruby rack

他们的文档中的经典hello world示例

class HelloWorld
  def call(env)
    return [200, {}, ["Hello world!"]]
  end
end

我的问题是为什么第三个值是[Hello world!“],而不是”Hello world“?来自他们的文档,

  

Body必须响应每个,并且必须只生成String值。该   正文本身不应该是String的实例,因为它会破坏   Ruby 1.9。

为什么身体需要对每个人做出回应?在什么情况下重要?

2 个答案:

答案 0 :(得分:9)

我认为机架起源于python的wsgi。这是python的解释: http://www.python.org/dev/peps/pep-3333/#buffering-and-streaming

答案 1 :(得分:6)

从句子The Body itself should not be an instance of String, as this will break in Ruby 1.9.判断,我假设答案的最后一个元素必须是Enumerable。由于String停止在1.9中包含此模块,因此您需要某种实现它的集合。

顺便说一下:你好世界的例子往往不是很好地弄清楚为什么某些东西以某种方式完成,它们太琐碎了。