lib/rorvswild/plugin/delayed_job.rb
# frozen_string_literal: true module RorVsWild module Plugin module DelayedJob def self.setup return if @installed return unless defined?(Delayed::Plugin) Delayed::Worker.plugins << Class.new(Delayed::Plugin) do callbacks do |lifecycle| lifecycle.around(:invoke_job) do |job, *args, &block| if job.payload_object.class.name == "ActiveJob::QueueAdapters::DelayedJobAdapter::JobWrapper" job_name, job_args = job.payload_object.job_data.values_at("job_class", "arguments") elsif job.payload_object.is_a?(Delayed::PerformableMethod) job_name, job_args = job.name, job.payload_object.args else job_name, job_args = job.name, job.payload_object end RorVsWild.agent.measure_job(job_name, parameters: job_args) { block.call(job) } end end end @installed = true end end end end