【发布时间】:2012-05-16 13:22:11
【问题描述】:
他们文档中的经典 hello world 示例,
class HelloWorld
def call(env)
return [200, {}, ["Hello world!"]]
end
end
我的问题是为什么第三个值是 [Hello world!"],而不是 "Hello world"?来自他们的文档,
Body 必须响应每一个并且只能产生 String 值。这 Body 本身不应该是 String 的实例,因为这会中断 红宝石 1.9。
为什么身体需要对每一个做出反应?在什么情况下有关系?
【问题讨论】:
-
我会假设它可以被缓冲,然后以块的形式发送给任何请求它的人。响应可能非常大,因此服务器将其“流式传输”出来。除了对主体的整个迭代之外,您的问题是否更具体到关于 Ruby 1.9 的条款?
-
当您考虑一下 send() 和 recv() 在 C 世界中的工作方式时,这也是有道理的。当你调用 recv 时,你给它一个地址,指向它填充的字符缓冲区。您不确定一个电话就能搞定整个身体。发送一系列字符时也是如此。