class ExceptionHunter::Middleware::DelayedJobHunter
DelayedJob plugin to track exceptions on apps using DelayedJob.
Constants
- ARGS_TRACKED_DATA
- JOB_TRACKED_DATA
- TRACK_AT_RETRY
Public Class Methods
environment_data(job)
click to toggle source
# File lib/exception_hunter/middleware/delayed_job_hunter.rb, line 43 def self.environment_data(job) job_data = JOB_TRACKED_DATA.reduce({}) do |dict, data_param| dict.merge(data_param => job.try(data_param)) end job_class = if job.payload_object.class.name == 'ActiveJob::QueueAdapters::DelayedJobAdapter::JobWrapper' # support for Rails 4.2 ActiveJob job.payload_object.job_data['job_class'] elsif job.payload_object.object.is_a?(Class) job.payload_object.object.name else job.payload_object.object.class.name end args_data = (job.payload_object.try(:job_data) || {}).select { |key, _value| ARGS_TRACKED_DATA.include?(key) } args_data['job_class'] = job_class || job.payload_object.class.name if args_data['job_class'].nil? job_data.merge(args_data) end
should_track?(attempts)
click to toggle source
# File lib/exception_hunter/middleware/delayed_job_hunter.rb, line 64 def self.should_track?(attempts) TRACK_AT_RETRY.include?(attempts) end
track_exception(exception, job)
click to toggle source
# File lib/exception_hunter/middleware/delayed_job_hunter.rb, line 30 def self.track_exception(exception, job) return unless should_track?(job.attempts) ErrorCreator.call( async_logging: false, tag: ErrorCreator::WORKER_TAG, class_name: exception.class.to_s, message: exception.message, environment_data: environment_data(job), backtrace: exception.backtrace ) end