Rails 3中为长时间运行的应用程序向用户发回状态的首选方法是什么?
TY, 佛瑞德
答案 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调用。