2009-07-08 14 views
3

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 

注意()メソッドを使用していますが、私は現在、ソースコードの説明を掘り下げようとしています。

答えて

3

私はこのバグがコミットbc2c4a45959be21e6314fba7876b32c1f04cd08aによって2-3安定して解決されたと信じています。チェックアウト:the accompanying ticket 2.3.3(現在はそれほど遠くない)か、現在の2-3安定版をgitからフリーズすることができます。

git clone git://github.com/rails/rails.git vendor/rails 
cd vendor/rails 
git checkout origin/2-3-stable 
rm -rf .git 
+0

いい考えがありましたが、悲しいことに答えはありません。私はこれを調べるときにバグが数回参照されるのを見ましたが、出力バッファを適切にフラッシュするよりも、モデルオブジェクトをメモリに保存することと関連があるようです。 – jdl

+0

私は二重チェックの手順に従ったことを言及する必要があります。私は2.3.2とエッジで見たのと同じことをします。 – jdl

+0

ライトハウストラッカーでチケットを開封してもらえますか?私はそれが見ていることを確認します。 –

関連する問題