class Skylight::Core::Probes::ActiveJob::EnqueueProbe

Constants

CAT

Public Instance Methods

install() click to toggle source
# File lib/skylight/core/probes/active_job_enqueue.rb, line 7
def install
  ::ActiveJob::Base.around_enqueue do |job, block|
    begin
      job_class = job.class
      adapter_name = EnqueueProbe.normalize_adapter_name(job_class)

      # If this is an ActionMailer::DeliveryJob, we'll report this as the mailer title
      # and include ActionMailer::DeliveryJob in the description.
      name, job_class_name = Skylight::Core::Normalizers::ActiveJob::Perform.normalize_title(job)
      descriptors = ["adapter: '#{adapter_name}'", "queue: '#{job.queue_name}'"]
      descriptors << "job: '#{job_class_name}'" if job_class_name
      desc = "{ #{descriptors.join(', ')} }"
    rescue
      block.call
    else
      Skylight::Core::Fanout.instrument(
        title: "Enqueue #{name}", category: CAT, description: desc, &block
      )
    end
  end

  self.class.instance_eval do
    if ::ActiveJob.gem_version >= Gem::Version.new("5.2")
      def normalize_adapter_name(job_class)
        job_class.queue_adapter_name
      end
    else
      def normalize_adapter_name(job_class)
        adapter_class = job_class.queue_adapter.is_a?(Class) ? job_class.queue_adapter : job_class.queue_adapter.class
        adapter_class.name.demodulize.remove("Adapter").underscore
      end
    end
  end
end
normalize_adapter_name(job_class) click to toggle source
# File lib/skylight/core/probes/active_job_enqueue.rb, line 30
def normalize_adapter_name(job_class)
  job_class.queue_adapter_name
end