在rails4应用程序中,我有一个非常长的任务(可能需要数小时)由resque处理(如railscast#271)。
控制器中的create动作如下所示:
def create
@longstuff = Longstuff.new(params[:longstuff])
if @longstuff.save
Resque.enqueue(LongStuffHandler, @longstuff.id)
redirect_to @longstuff, :notice => "Success."
else
render 'new'
end
end
我想更新用户队列的状态,并向他提供有用的信息(统计数据,已用时间,进度条等)。
我的想法是在“新”视图中创建一个div,每隔3秒使用javascript自动刷新一次,并显示LongStuffHandler类提供的一些内容。
到目前为止,我已经能够实现这一点,使得LongStuffHandler类将一些html写入由javascript加载的文件中。 这会导致一些问题,例如,每秒写入文件10次并不理想。
我想让LongStuffHandler类能够实时导出一些变量并使它们可用于“新”视图,这样只需重新加载部分就可以使我的页面看起来更新。 一个例子是LongStuffHandler类有一个名为“@lastlog”的变量,并使其可用于“new”视图,其中有一个像jb这样自动更新的div:
<div class="lastlog">
<h2>Last Log</h2>
<p><%= @lastlog %></p>
</div>
后台作业是否可以导出这样的变量并且视图可以导入它?