class Skylight::Core::Probes::DelayedJob::Probe

Constants

UNKNOWN

Public Instance Methods

handle_failed_job(job, error, *args) click to toggle source
# File lib/skylight/core/probes/delayed_job.rb, line 32
def handle_failed_job(job, error, *args)
  handle_failed_job_without_sk(job, error, *args)
  return unless Skylight.trace
  Skylight.trace.segment = "error"
end
install() click to toggle source
# File lib/skylight/core/probes/delayed_job.rb, line 7
def install
  return unless validate_version
  ::Delayed::Worker.class_eval do
    include Skylight::Core::Util::Logging
    alias_method :run_without_sk, :run
    alias_method :handle_failed_job_without_sk, :handle_failed_job

    def run(job, *args)
      t { "Delayed::Job beginning trace" }

      handler_name = begin
        if defined?(::Delayed::PerformableMethod) && job.payload_object.is_a?(::Delayed::PerformableMethod)
          job.name
        else
          job.payload_object.class.name
        end
      rescue
        UNKNOWN
      end

      Skylight.trace(handler_name, "app.delayed_job.worker", "Delayed::Worker#run", component: :worker, segment: job.queue) do
        run_without_sk(job, *args)
      end
    end

    def handle_failed_job(job, error, *args)
      handle_failed_job_without_sk(job, error, *args)
      return unless Skylight.trace
      Skylight.trace.segment = "error"
    end
  end
end
run(job, *args) click to toggle source
# File lib/skylight/core/probes/delayed_job.rb, line 14
def run(job, *args)
  t { "Delayed::Job beginning trace" }

  handler_name = begin
    if defined?(::Delayed::PerformableMethod) && job.payload_object.is_a?(::Delayed::PerformableMethod)
      job.name
    else
      job.payload_object.class.name
    end
  rescue
    UNKNOWN
  end

  Skylight.trace(handler_name, "app.delayed_job.worker", "Delayed::Worker#run", component: :worker, segment: job.queue) do
    run_without_sk(job, *args)
  end
end

Private Instance Methods

validate_version() click to toggle source
# File lib/skylight/core/probes/delayed_job.rb, line 42
def validate_version
  spec = Gem.loaded_specs["delayed_job"]
  version = spec && spec.version

  if !version || version < Gem::Version.new("4.0.0")
    $stderr.puts "[SKYLIGHT::CORE] [#{Skylight::Core::VERSION}] The installed version of DelayedJob is not supported on Skylight. Your jobs will not be tracked."

    return false
  end

  true
end