eine klassische Hallo Welt Beispiel aus ihrem doc,Warum ist Rack Antwort Körper ein Array keine Zeichenfolge?
class HelloWorld
def call(env)
return [200, {}, ["Hello world!"]]
end
end
meine Frage ist, warum der dritte Wert ist [Hallo Welt! "], Nicht "Hallo Welt"? Aus ihrer doc,
Die Körper muss auf jeden reagieren und müssen nur String-Werte ergeben. Die Körper selbst keine Instanz von String sein sollte, wie dies in Ruby 1.9 brechen.
Warum Körper braucht auf jeden antworten? und in welchem Fall spielt es eine Rolle?
Ich würde annehmen, dass es gepuffert werden kann und dann in Stücke an wen auch immer gesendet werden kann. Die Antwort kann ziemlich groß sein, so dass die Server es "streamen". ist Ihre Frage spezifischer für die Klausel über Ruby 1.9 als die gesamte Iteration über den Körper? –
Es macht auch Sinn, wenn Sie darüber nachdenken, wie send() und recv() in der C-Welt arbeiten. Wenn Sie recv anrufen, geben Sie ihm eine Adresse für einen Puffer von Zeichen, die er füllt. Sie sind nicht sicher, den gesamten Körper in einem Anruf zu erhalten. Das gleiche gilt, wenn Sie eine Reihe von Zeichen senden. – nickethier