从长时间运行的Rails控制器功能返回状态的最佳方法?

时间:2013-01-29 01:22:02

标签: ruby-on-rails ruby-on-rails-3

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

TY, 佛瑞德

2 个答案:

答案 0 :(得分:2)

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

查看Ruby on Rails: How to run things in the background?Background processing in Rails的答案,了解使用Rails进行后台处理的一些选项。

答案 1 :(得分: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调用。