Sha256: d02fafd0224fbe6f95d0fbb8e3d399e8bcdda6f5045a6f24be3f5b72e932d0ed

Contents?: true

Size: 1.39 KB

Versions: 5

Compression:

Stored size: 1.39 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 RPM so it gets
# loaded at the time the RPM plugin 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
  depends_on do
    defined?(::Delayed) && defined?(::Delayed::Worker)
  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 "RPM 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
DependencyDetection.detect!

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
newrelic_rpm-3.0.1 lib/new_relic/delayed_job_injection.rb
newrelic_rpm-3.1.0.beta1 lib/new_relic/delayed_job_injection.rb
newrelic_rpm-3.0.0 lib/new_relic/delayed_job_injection.rb
newrelic_rpm-3.0.0.beta2 lib/new_relic/delayed_job_injection.rb
newrelic_rpm-3.0.0.beta1 lib/new_relic/delayed_job_injection.rb