私はレールが初めてで、その点についてはルビーです。Ruby 1.9.2 と Rails 3.1 に基づいて Rails アプリを作成しました
おそらくレールでのストリーミングの実装を理解しているため、問題が発生しました。Rails がテンプレート コンテンツをレンダリングする前に、それを評価するプロセスを完了する必要があるように私には思えます。
たとえば、次のような cgi スクリプトがあるとします。
#!/bin/sh
cat <<END
Content-Type: text/html
END
for i in {1..10}
do
echo $i
sleep 1
done
これにより、一度にすべてではなく、スクリプトによってレンダリングされるときに、ブラウザーに 1 から 10 までの数字が順番に表示されます。これは、Rails ビューでエミュレートしたい動作です。
ビューに次のものがあるとしましょう。
<h1> hi </h1>
<%
sleep 5
%>
<h2> bye </h2>
何も表示する前に、スリープ 5 が完了するまで待機します。
curl -i を使用して Web サーバーからの応答を監視すると、Transfer-Encoding: 期待どおりにチャンクされた応答ヘッダーが期待どおりにすぐに取得されます。ただし、スリープが完了するまで本文の内容はレンダリングされません。
上に貼り付けた単純な CGI スクリプトと同じ方法で本文コンテンツをレンダリングするにはどうすればよいですか? 具体的には、最初に<h1> hi </h1>
5 秒後に<h2> bye </h2>
?