我有一个已作为独立功能实现的 ruby 脚本。
现在我想在我的 Rails 环境中执行这个脚本,但将其作为后台作业执行会增加难度,因为它需要大量的时间处理。
添加delayed_job gem后,我尝试调用以下句子:
delay.system("ruby my_script.rb")
这是我得到的错误:
Completed 500 Internal Server Error in 95ms
TypeError (can't dump anonymous module: #<Module:0x007f8a9ce14dc0>):
app/controllers/components_controller.rb:49:in `create'
呼叫self.delay
来自控制器的方法行不通 https://github.com/collectiveidea/delayed_job/issues/371,因为 DJ 会尝试将您的控制器序列化到作业中。您最好创建一个类来处理您的任务,然后将其方法标记为异步:
class AsyncTask
def run
system('ruby my_script.rb')
end
handle_asynchronously :run
end
在你的控制器中:
def create
...
AsyncTask.new.run
...
end
请参阅“排队作业”部分中的第二个示例readme https://github.com/collectiveidea/delayed_job.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)