class Sentry::InstJobs::Plugin

Constants

INST_JOBS_CONTEXT_KEY

need to symbolize strings as keyword arguments in Ruby 2.4~2.6

Public Class Methods

capture_exception(exception, job) click to toggle source
# File lib/sentry/inst_jobs/plugin.rb, line 65
def self.capture_exception(exception, job)
  Sentry::InstJobs.capture_exception(exception, hint: { background: false }) if report?(job)
end
compute_job_class(payload_object) click to toggle source
# File lib/sentry/inst_jobs/plugin.rb, line 56
def self.compute_job_class(payload_object)
  if payload_object.is_a? Delayed::PerformableMethod
    klass = payload_object.object.is_a?(Class) ? payload_object.object.name : payload_object.object.class.name
    "#{klass}##{payload_object.method}"
  else
    payload_object.class.name
  end
end
finish_transaction(transaction, status) click to toggle source
# File lib/sentry/inst_jobs/plugin.rb, line 77
def self.finish_transaction(transaction, status)
  return unless transaction
  
  transaction.set_http_status(status)
  transaction.finish
end
generate_contexts(job) click to toggle source
# File lib/sentry/inst_jobs/plugin.rb, line 36
def self.generate_contexts(job)
  context = {}

  context[INST_JOBS_CONTEXT_KEY] = {
    id: job.id.to_s,
    priority: job.priority,
    attempts: job.attempts,
    run_at: job.run_at,
    locked_at: job.locked_at,
    locked_by: job.locked_by,
    queue: job.queue,
    created_at: job.created_at,
    last_error: job.last_error&.byteslice(0..1000),
    handler: job.handler&.byteslice(0..1000),
    job_class: compute_job_class(job.payload_object),
  }

  context
end
report?(job) click to toggle source
# File lib/sentry/inst_jobs/plugin.rb, line 69
def self.report?(job)
  return true unless Sentry.configuration.inst_jobs.report_after_job_retries

  # We use the predecessor because the job's attempts haven't been increased to the new
  # count at this point.
  job.attempts >= job.max_attempts.pred
end