0

Rails 3で長時間実行されているアプリケーションのステータスをユーザーに送り返す方法は何ですか?

TY、フレッド

4

2 に答える 2

2

バックグラウンド プロセスで時間のかかるタスクを実行し、メイン関数からできるだけ早く/すぐに戻ることをお勧めします。

Ruby on Rails: How to run things in the background?の回答を確認してください。Railsでのバックグラウンド処理のいくつかのオプションについて知るには、Rails でのバックグラウンド処理を参照してください。

于 2013-01-29T01:43:44.220 に答える
0

その長時間実行されるアプリケーションのステータスを、Rails が読み取り可能な固定の場所に書き込むようにします。ステータスは通常、進行状況の表示に使用される 1 ~ 100 の範囲で増え続ける数値、またはステータス (つまり、「読み取り中、処理中、書き込み中」) の 2 つの形式で表されます。

次に、そのファイルを読み取る AJAX コントローラー アクションを開発する必要があります。AJAX アクションが起動したときに実行される、対応する JavaScript ファイルを作成します。

すなわち app/controllers/some_controller.rb

def get_status
  @status = File.open("#{Rails.root.to_s}/tmp/lrp_status.txt","rb") { |f| f.read } 
end

次に app/views/some/get_status.js.erb で:

$('#my_status_div').html('<p> the status is <%= @status %></p>');

次に、好みのタイマー javascript を使用して、javascript を設定する必要があります。ここでのポイントは、(? 1 秒) ごとに get_status AJAX 呼び出しを開始することです。

于 2013-01-29T01:50:58.773 に答える