是否可以在所有delayed_job任务之前运行一个方法?
基本上,我们试图确保每台运行delayed_job的服务器都有我们代码的最新实例,因此我们希望运行一个方法来在每个作业运行之前检查这一点。
(我们已经有了“check”方法并在其他地方使用它。问题只是关于如何从delayed_job调用它。)
现在有一种官方方法可以通过插件来做到这一点。这篇博文通过示例清楚地描述了如何做到这一点http://www.salsify.com/blog/delayed-jobs-callbacks-and-hooks-in-rails http://www.salsify.com/blog/delayed-jobs-callbacks-and-hooks-in-rails(本文中描述的一些事件可能已经过时。请参阅下面的基于最新 DJ 来源的更新列表)
本质上,您实现了一个初始化程序,该初始化程序设置了一个delayed_job插件,如下所示:
# config/initializers/delayed_job_my_delayed_job_plugin.rb
module Delayed
module Plugins
class MyDelayedJobPlugin < Plugin
callbacks do |lifecycle|
# see below for list of lifecycle events
lifecycle.after(:invoke_job) do |job|
# do something here
end
end
end
end
end
Delayed::Worker.plugins << Delayed::Plugins::MyDelayedJobPlugin
您将有权访问以下生命周期事件和适用的参数:
:enqueue => [:job],
:execute => [:worker],
:loop => [:worker],
:perform => [:worker, :job],
:error => [:worker, :job],
:failure => [:worker, :job],
:invoke_job => [:job]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)