Rails 2.3.2で説明できないことがあります。私は1つのコントローラとこれを絞り込むための1つのアクションで、新しいアプリケーションを作成しました。私のコントローラ全体は以下の通りです。Rails "render:text => proc" 2.2.2対2.3.2
class LinesController < ApplicationController
def show
respond_to do |format|
format.html { render :text => proc {|response, output|
10.times do |i|
output.write("This is line #{i}\n")
output.flush
end
}
}
end
end
end
これをRails 2.2.2で実行すると、次のような応答が表示されます。
$ curl http://localhost:3002/lines
This is line 0
This is line 1
This is line 2
This is line 3
This is line 4
This is line 5
This is line 6
This is line 7
This is line 8
This is line 9
しかし、これをRails 2.3.2で実行すると、代わりにこれが表示されます。
$ curl http://localhost:3002/lines
curl: (18) transfer closed with outstanding read data remaining
ブラウザでこれをヒットした場合は、最初の行だけが表示されます。私は答えはフラッシュのどこかにあると思われる10
10万人から行数を削減する以外は私のサンプルコードは、renderのためのRailsのドキュメントから直接であることを
This is line 0
注意()メソッドを使用していますが、私は現在、ソースコードの説明を掘り下げようとしています。
いい考えがありましたが、悲しいことに答えはありません。私はこれを調べるときにバグが数回参照されるのを見ましたが、出力バッファを適切にフラッシュするよりも、モデルオブジェクトをメモリに保存することと関連があるようです。 – jdl
私は二重チェックの手順に従ったことを言及する必要があります。私は2.3.2とエッジで見たのと同じことをします。 – jdl
ライトハウストラッカーでチケットを開封してもらえますか?私はそれが見ていることを確認します。 –