Sha256: 13888de5f0fe16147e5149bd5da686a95eef1f11cc3824c507914cc544351797

Contents?: true

Size: 996 Bytes

Versions: 4

Compression:

Stored size: 996 Bytes

Contents

# 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

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
rorvswild-1.9.0 lib/rorvswild/plugin/delayed_job.rb
rorvswild-1.8.1 lib/rorvswild/plugin/delayed_job.rb
rorvswild-1.8.0 lib/rorvswild/plugin/delayed_job.rb
rorvswild-1.7.1 lib/rorvswild/plugin/delayed_job.rb