Class: Appsignal::Hooks::DelayedJobPlugin

Inherits:
Delayed::Plugin
  • Object
show all
Defined in:
lib/appsignal/integrations/delayed_job_plugin.rb

Class Method Summary collapse

Class Method Details

.invoke_with_instrumentation(job, block) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/appsignal/integrations/delayed_job_plugin.rb', line 14

def self.invoke_with_instrumentation(job, block)
  class_and_method_name = if job.payload_object.respond_to?(:appsignal_name)
                            job.payload_object.appsignal_name
                          else
                            job.name
                          end
  class_name, method_name = class_and_method_name.split('#')

  Appsignal.monitor_transaction(
    'perform_job.delayed_job',
    :class    => class_name,
    :method   => method_name,
    :metadata => {
      :id       => job.id,
      :queue    => job.queue,
      :priority => job.priority || 0,
      :attempts => job.attempts || 0
    },
    :queue_start => job.created_at
  ) do
    block.call(job)
  end
end