21

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

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

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

Body 必须响应每一个并且只能产生 String 值。Body 本身不应该是 String 的实例,因为这将在 Ruby 1.9 中中断。

为什么身体需要对每一个做出反应?在什么情况下有关系?

4

2 回答 2

9

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

于 2012-05-08T03:49:51.550 回答
7

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

顺便说一句:你好世界的例子通常不能很好地弄清楚为什么以某种方式完成某事,它们太微不足道了。

于 2012-05-08T07:15:54.527 回答