我有这样的代码
def validate
if abc.nil?
redirect_to :action => 'noInitialSelection'
else
redirect_to :action => 'Selection'
script(params)
end
end
脚本方法必须处理10000个名称的文件并执行相关工作。现在的问题是代码完成需要花费大量时间,页面没有被重定向到选择并导致500内部服务器错误
我希望将页面重定向到“选择”,以便用户知道他输入了正确的详细信息,然后在后台执行脚本方法
由于
答案 0 :(得分:1)
您需要查看作业队列以运行script(params)
。这有多个宝石;一个非常受欢迎的是 delayed_job 。
设置delayed_job后,您的方法可能看起来像
def validate
if abc.nil?
redirect_to :action => 'noInitialSelection'
else
Delayed::Job.enqueue ScriptJob.new(params)
redirect_to :action => 'Selection'
end
end
您可以独立创建自定义作业,例如
class ScriptJob < Struct.new(:params)
def perform
script(params)
end
end
enqueue
调用将script(params)
排入作业队列,以供工作人员处理。