Sha256: b4f8ca66731937079db0cd0e92af08566d4e52d9b89ed2d3a2f9f3e53cfa2041

Contents?: true

Size: 1.8 KB

Versions: 19

Compression:

Stored size: 1.8 KB

Contents

require 'dependency_detection'
# This installs some code to manually start the agent when a delayed
# job worker starts.  It's not really instrumentation.  It's more like
# a hook from DJ to the Ruby Agent so it gets loaded at the time the
# Ruby Agent initializes, which must be before the DJ worker
# initializes.  Loaded from control.rb
module NewRelic
  module DelayedJobInjection
    extend self
    attr_accessor :worker_name
  end
end

DependencyDetection.defer do
  @name = :delayed_job_injection
  
  depends_on do
    defined?(::Delayed) && defined?(::Delayed::Worker) && !NewRelic::Agent.config[:disable_dj]
  end
  
  executes do
    if NewRelic::Agent.respond_to?(:logger)
      ::NewRelic::Agent.logger.info 'Installing DelayedJob instrumentation hooks'
    end
  end
  
  executes do
    Delayed::Worker.class_eval do
      def initialize_with_new_relic(*args)
        initialize_without_new_relic(*args)
        worker_name = case
                      when self.respond_to?(:name) then self.name
                      when self.class.respond_to?(:default_name) then self.class.default_name
                      end
        dispatcher_instance_id = worker_name || "host:#{Socket.gethostname} pid:#{Process.pid}" rescue "pid:#{Process.pid}"
        say "New Relic Ruby Agent Monitoring DJ worker #{dispatcher_instance_id}"
        NewRelic::DelayedJobInjection.worker_name = worker_name
        NewRelic::Control.instance.init_plugin :dispatcher => :delayed_job, :dispatcher_instance_id => dispatcher_instance_id
      end

      alias initialize_without_new_relic initialize
      alias initialize initialize_with_new_relic
    end
  end
end

# If Rails is defined, this gets called in an after_initialize hook
# see NewRelic::Control::Frameworks::Rails#init_config
unless defined?(Rails)
  DependencyDetection.detect!
end

Version data entries

19 entries across 19 versions & 3 rubygems

Version Path
wd_newrelic_rpm-3.5.8 lib/new_relic/delayed_job_injection.rb
sundawg_newrelic_rpm-3.5.8.2 lib/new_relic/delayed_job_injection.rb
sundawg_newrelic_rpm-3.5.8.1 lib/new_relic/delayed_job_injection.rb
newrelic_rpm-3.5.8.72 lib/new_relic/delayed_job_injection.rb
newrelic_rpm-3.5.8.70 lib/new_relic/delayed_job_injection.rb
newrelic_rpm-3.5.8.64.beta lib/new_relic/delayed_job_injection.rb
newrelic_rpm-3.5.7.59 lib/new_relic/delayed_job_injection.rb
newrelic_rpm-3.5.7.59.beta lib/new_relic/delayed_job_injection.rb
newrelic_rpm-3.5.7.58.beta lib/new_relic/delayed_job_injection.rb
wd_newrelic_rpm-3.5.6 lib/new_relic/delayed_job_injection.rb
newrelic_rpm-3.5.7.57.beta lib/new_relic/delayed_job_injection.rb
newrelic_rpm-3.5.6.55 lib/new_relic/delayed_job_injection.rb
newrelic_rpm-3.5.6.48.beta lib/new_relic/delayed_job_injection.rb
newrelic_rpm-3.5.6.46.beta lib/new_relic/delayed_job_injection.rb
newrelic_rpm-3.5.6.42.beta lib/new_relic/delayed_job_injection.rb
newrelic_rpm-3.5.5.39.beta lib/new_relic/delayed_job_injection.rb
wd_newrelic_rpm-3.5.5 lib/new_relic/delayed_job_injection.rb
newrelic_rpm-3.5.5.38 lib/new_relic/delayed_job_injection.rb
newrelic_rpm-3.5.5.540.dev lib/new_relic/delayed_job_injection.rb