Module: Bugno::Middleware::Rails::ActiveJobExtensions

Included in:
ActiveJob::Base
Defined in:
lib/bugno/middleware/rails/active_job_extensions.rb

Constant Summary collapse

ADAPTERS =
%w[ActiveJob::QueueAdapters::SidekiqAdapter ActiveJob::QueueAdapters::DelayedJobAdapter].freeze

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(base) ⇒ Object



11
12
13
14
15
# File 'lib/bugno/middleware/rails/active_job_extensions.rb', line 11

def self.included(base)
  base.class_eval do
    around_perform { |job, block| capture_and_reraise(job, block) }
  end
end

Instance Method Details

#capture_and_reraise(job, block) ⇒ Object



17
18
19
20
21
22
23
24
# File 'lib/bugno/middleware/rails/active_job_extensions.rb', line 17

def capture_and_reraise(job, block)
  block.call
rescue Error
  raise
rescue Exception => e
  Handler.call(exception: e, job: job_data(job)) if Bugno.configured?
  raise e
end

#job_data(job) ⇒ Object



26
27
28
29
30
31
32
33
34
35
36
# File 'lib/bugno/middleware/rails/active_job_extensions.rb', line 26

def job_data(job)
  data = {
    active_job: job.class.name,
    arguments: job.arguments,
    scheduled_at: job.scheduled_at,
    job_id: job.job_id,
    locale: job.locale
  }
  data[:provider_job_id] = job.provider_job_id if job.respond_to?(:provider_job_id)
  data
end