在所有延迟的作业之前挂钩

2024-05-28

是否可以在所有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(使用前将#替换为@)

在所有延迟的作业之前挂钩 的相关文章

  • puma 初始化程序不适用于 Rails 4.2

    我之前安装过很多次puma 从来没有出现过这个问题 我逐字遵循heroku 的指示 我创建了一个Procfile里面有这个 web bundle exec puma C config puma rb 这是配置文件 puma rb worke
  • Rails - 查找多个数组之间的交集

    我正在尝试查找多个数组之间的交集值 例如 code1 1 2 3 code2 2 3 4 code3 0 2 6 所以结果是 2 我知道在 PHP 中你可以使用 array intersect 来做到这一点 我希望能够轻松添加额外的数组 所
  • 剥掉所有的身体标签而不毁掉他们的孩子

    此 Ruby 代码使用Nokogiri http nokogiri org doc xpath tbody remove 删除 的子项 tbody 以及 tbody 他们自己 我只想删除所有 tbody 文档中的标签 将其子项留在原处 我怎
  • 如何在 swagger 中传递多值查询参数

    我在 swagger yml 中有以下服务 该服务被编写为可以多次传递page id 例如 pages page id 123 page id 542 我检查了这个链接https swagger io specation https swa
  • 如何在 Rails 中为不在模型文件夹根目录中的模型定义工厂女孩?

    我想为我的服务器中的模型创建一个工厂女孩 该模型位于模型文件夹的文件夹内 我的树视图如下所示 app models xxx user rb spec factories xxx user rb 我的工厂女工长这样 FactoryGirl d
  • 如何从 Sinatra 中删除路线?

    我有一些动态加载的插件 它们在启动时注册它们的路由 但是我还需要能够在禁用它们时删除它们的路由 有没有办法删除现有的路线 API 没有任何我能找到的方法来删除它们 我能想到的唯一其他方法就是直接访问 Sinatra Base 中的 rout
  • 使用 nginx 运行水豚

    是否可以使用 nginx 和乘客来运行水豚 而是 webrick Capybara 与 Cucumber 一起安装在 Rails 应用程序中 这很简单 你唯一要做的就是改变你的想法 水豚和黄瓜都不受本地环境的束缚 你可以测试位于互联网上的应
  • python:pythonbrew 和 virtualenv 有什么区别?

    我是python新手 打算学习django 我对 ruby 不是 Rails 有一些经验 并且熟悉RVM http beginrescueend com 但是我不明白之间的区别蟒蛇酿造 https github com utahta pyt
  • 如何比较两个哈希值?

    我正在尝试使用以下代码比较两个 Ruby 哈希 usr bin env ruby require yaml require active support file1 YAML load File open en 20110207 yml f
  • Rails 3 ActiveRecord 方法链接,底层

    假设您构建一个涉及多个方法链接的查询 例如 Post where id gt 10 limit 20 order id asc except order 我想知道幕后发生了什么 据推测 链的每个部分都将帮助构建 SQL SELECT 一旦链
  • 通过 Devise 将 Discourse SSO 与现有 Rails 站点相结合

    我有一个现有的 Rails 应用程序 它使用 devise 作为用户身份验证 我添加了一个话语论坛 http www discourse org一切都很顺利 它驻留在子域上 我已阅读该帖子https meta discourse org t
  • 通过子对象的最大字段值查找 ActiveRecord 对象?

    如何找到与 ActiveRecord 计算结果关联的对象而不是值 例如 我有 parent 它有很多孩子 我想找到具有最大 价值 的孩子 我知道我可以做 parent children maximum value 但这会返回最大值 是否有类
  • Rails:将值序列化为逗号分隔而不是 YAML

    我正在寻找一种方法来存储例如的序列化值 列中的 ID 在之前的声明中 这不是最佳设计 该列用于关联记录的 ID 但仅在显示记录时使用 因此不会对该列进行选择进行查询 也不会对此列进行联接任何一个 在 Rails 中 我可以使用以下方法序列化
  • 运行 cron 作业“require”时出错:无法加载此类文件——bundler/setup (LoadError)

    我已经使用 Capistrano 3 部署了应用程序 我不断收到以下错误 require cannot load such file bundler setup LoadError 这是 cron 选项卡列表 PATH home deplo
  • 根据多列删除重复记录

    在我们的系统中 我们每小时从外部数据库进行导入 由于导入脚本中存在错误 现在存在一些重复记录 如果任何记录具有相同的内容 则视为重复 legacy id and company 我可以运行什么代码来查找并删除这些重复项 我正在玩这个 Pro
  • 在 Ruby 中显示 HTTP 请求的标头和正文

    我确信这很容易 但我进行了相当广泛的搜索 但无法找到答案 我正在使用Net HttpRuby 中的库 我想弄清楚如何显示 HTTP GET 请求的完整正文 像下面这样 GET really long path index html q fo
  • File.join 什么时候有用?

    通过阅读文档 很明显 File join 将给定参数与 字符连接起来 什么时候使用这个 而不是filenames join 有益吗 还有另一个微妙的区别 File join foo bar gt foo bar foo bar join g
  • 如何在 ruby​​ 中递归创建目录?

    我想将文件存储为 a b c d txt 但我不知道这些目录是否存在 并且需要在必要时递归创建它们 如何在 ruby 中做到这一点 Use mkdir p http www ruby doc org stdlib libdoc fileut
  • 在没有 Flash 的情况下用 HTML / js 录制音频?

    从麦克风录制音频并将 ajax 发回服务器 真的不知道如何在 Flash 中做到这一点 并希望它保持简单 目前还没有浏览器实现WHATWG 设备 API http www whatwg org specs web apps current
  • Ruby:如何将文件保存为 UTF-16 Little Endian

    我想用UTF 16 Little Endian将 保存到txt文件中 我通过一些方式进行了测试 1 下面的编码是UTF 8 RegisterMark 174 pack U file File new C Output txt w file

随机推荐