class Atatus::Spies::DelayedJobSpy

@api private

Constants

CLASS_SEPARATOR
METHOD_SEPARATOR
TYPE

Public Class Methods

invoke_job(job, *args, &block) click to toggle source
# File lib/atatus/spies/delayed_job.rb, line 44
def self.invoke_job(job, *args, &block)
  job_name = name_from_payload(job.payload_object)
  transaction = Atatus.start_transaction(job_name, TYPE)
  job.invoke_job_without_apm(*args, &block)
  transaction.done 'success'
rescue ::Exception => e
  Atatus.report(e, handled: false)
  transaction.done 'error'
  raise
ensure
  Atatus.end_transaction
end
name_from_payload(payload_object) click to toggle source
# File lib/atatus/spies/delayed_job.rb, line 57
def self.name_from_payload(payload_object)
  if payload_object.is_a?(::Delayed::PerformableMethod)
    performable_method_name(payload_object)
  else
    payload_object.class.name
  end
end
name_separator(payload_object) click to toggle source
# File lib/atatus/spies/delayed_job.rb, line 78
def self.name_separator(payload_object)
  payload_object.object.is_a?(Class) ? CLASS_SEPARATOR : METHOD_SEPARATOR
end
object_name(payload_object) click to toggle source
# File lib/atatus/spies/delayed_job.rb, line 72
def self.object_name(payload_object)
  object = payload_object.object
  klass = object.is_a?(Class) ? object : object.class
  klass.name
end
performable_method_name(payload_object) click to toggle source
# File lib/atatus/spies/delayed_job.rb, line 65
def self.performable_method_name(payload_object)
  class_name = object_name(payload_object)
  separator = name_separator(payload_object)
  method_name = payload_object.method_name
  "#{class_name}#{separator}#{method_name}"
end

Public Instance Methods

install() click to toggle source
# File lib/atatus/spies/delayed_job.rb, line 29
def install
  if defined?(::Delayed) && defined?(::Delayed::Backend) && defined?(::Delayed::Backend::Base)

    ::Delayed::Backend::Base.class_eval do
      alias invoke_job_without_apm invoke_job

      def invoke_job(*args, &block)
        ::Atatus::Spies::DelayedJobSpy
          .invoke_job(self, *args, &block)
      end
    end

  end
end
invoke_job(*args, &block) click to toggle source
# File lib/atatus/spies/delayed_job.rb, line 35
def invoke_job(*args, &block)
  ::Atatus::Spies::DelayedJobSpy
    .invoke_job(self, *args, &block)
end