0

mysql テーブルに挿入する 100,000 近くのレコード (約 50 MB) を含む csv ファイル (@fn) があります。例えば:

FCSV.foreach(@fn, {:headers => true}) do |row|
    model = Model.new(Hash[row])
    model.save
end

ASP の時代に戻ると、このループ中にバッファーを html として出力し、ユーザーの画面に出力して、プロセスがどのくらい進行したかを視覚的にフィードバックすることができました。Ruby on Rails では、このアプローチに相当するものはありますか?

それが役に立てば、Rails 2.3.9 と Ruby 1.8.7 を使用しています。

バックグラウンド ジョブなど、フィードバックを実現する方法はたくさんありますが、実際に疑問に思っているのは、ループの反復ごとにバッファーをダンプして画面 (コンソールではなく) に出力する方法です。

4

1 に答える 1

0

この質問はあなたの助けになるかもしれません。古い Rails クライアントを使用してストリーミングする方法について説明します。

Ruby on Rails 3: Rails を介してクライアントにデータをストリーミングする

投稿から直接の例を次に示します。

render :text => proc { |response, output|
  10_000_000.times do |i|
    output.write("This is line #{i}\n")
  end
}
于 2012-10-11T05:32:54.403 に答える