在 rails4 应用程序中,我有一个很长的任务(可能需要几个小时),由 resque 处理(如 railscasts #271)。
控制器中的创建操作如下所示:
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”的变量,并使其可用于“新”视图,其中有一个由 javascript 自动更新的 div:
<div class="lastlog">
<h2>Last Log</h2>
<p><%= @lastlog %></p>
</div>
后台作业是否可以导出这样的变量并让视图导入它?