0

Rails 3 中为长时间运行的应用程序向用户发回状态的首选方式是什么?

泰,弗雷德

4

2 回答 2

2

建议在后台进程中执行冗长的任务,并尽快/立即从主函数返回。

查看Ruby on Rails 的答案:如何在后台运行?和Rails 中的后台处理,以了解使用 Rails 进行后台处理的一些选项。

于 2013-01-29T01:43:44.220 回答
0

让那个长时间运行的应用程序将其状态写入 Rails 可以读取的固定位置。状态通常有两种形式,一个在1-100范围内不断增加的数字,用于进度显示,或者一个状态,即“读、处理、写”。

然后你必须开发一个 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 thingy 设置一些 javascript。这里的重点是每隔(?1 秒),触发 get_status AJAX 调用。

于 2013-01-29T01:50:58.773 回答