class Sentry::DelayedJob::Plugin
Constants
- ACTIVE_JOB_CONTEXT_KEY
- DELAYED_JOB_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/delayed_job/plugin.rb, line 74 def self.capture_exception(exception, job) Sentry::DelayedJob.capture_exception(exception, hint: { background: false }) if report?(job) end
compute_job_class(payload_object)
click to toggle source
# File lib/sentry/delayed_job/plugin.rb, line 65 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_name}" else payload_object.class.name end end
finish_transaction(transaction, status)
click to toggle source
# File lib/sentry/delayed_job/plugin.rb, line 86 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/delayed_job/plugin.rb, line 37 def self.generate_contexts(job) context = {} context[DELAYED_JOB_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), } if job.payload_object.respond_to?(:job_data) context[ACTIVE_JOB_CONTEXT_KEY] = {} job.payload_object.job_data.each do |key, value| context[ACTIVE_JOB_CONTEXT_KEY][key.to_sym] = value end end context end
report?(job)
click to toggle source
# File lib/sentry/delayed_job/plugin.rb, line 78 def self.report?(job) return true unless Sentry.configuration.delayed_job.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 >= Delayed::Worker.max_attempts.pred end