Class: Appsignal::Integrations::DelayedPlugin

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

Class Method Summary collapse

Class Method Details

.invoke_with_instrumentation(job, block) ⇒ Object



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

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