module NewRelic::Agent::Instrumentation::DelayedJob

Public Instance Methods

initialize_with_tracing() { || ... } click to toggle source
# File lib/new_relic/agent/instrumentation/delayed_job/instrumentation.rb, line 9
def initialize_with_tracing
  yield
  worker_name = case
                when self.respond_to?(:name) then self.name
                when self.class.respond_to?(:default_name) then self.class.default_name
  end
  NewRelic::DelayedJobInjection.worker_name = worker_name

  # TODO: Refactor the last line of this condition so that it can be evaluated in both prepend and chain instrumentation
  if defined?(::Delayed::Job) && ::Delayed::Job.method_defined?(:invoke_job) &&
      !(::Delayed::Job.method_defined?(:invoke_job_without_new_relic))

    ::NewRelic::Agent.logger.info('Installing DelayedJob instrumentation [part 2/2]')
    install_newrelic_job_tracer
    NewRelic::Control.instance.init_plugin(:dispatcher => :delayed_job)
  else
    NewRelic::Agent.logger.warn('Did not find a Delayed::Job class responding to invoke_job, aborting DJ instrumentation')
  end
end