Module: CloseYourIt::Rails::ActiveJobExtension
- Defined in:
- lib/closeyourit/rails/active_job_extension.rb
Overview
Incluso in ActiveJob::Base (via railtie ‘on_load(:active_job)`): cattura gli errori dei job (oggi persi) con il contesto del job, poi ri-solleva. La logica vive in `.monitor` per essere testabile senza ActiveSupport/ActiveJob.
Class Method Summary collapse
- .apply_job_scope(job) ⇒ Object
- .included(base) ⇒ Object
-
.monitor(job) ⇒ Object
Esegue il job arricchendo lo scope con tag/context; cattura l’errore (handled:false) e ri-solleva; resetta lo scope a fine job (no bleed tra job sullo stesso thread).
Class Method Details
.apply_job_scope(job) ⇒ Object
31 32 33 34 35 36 37 38 39 |
# File 'lib/closeyourit/rails/active_job_extension.rb', line 31 def self.apply_job_scope(job) CloseYourIt.set_tag("job.class", job.class.name) CloseYourIt.set_tag("job.queue", job.queue_name) if job.respond_to?(:queue_name) context = {} context["job_id"] = job.job_id if job.respond_to?(:job_id) context["executions"] = job.executions if job.respond_to?(:executions) CloseYourIt.set_context("active_job", context) unless context.empty? end |
.included(base) ⇒ Object
9 10 11 12 13 |
# File 'lib/closeyourit/rails/active_job_extension.rb', line 9 def self.included(base) base.around_perform do |job, block| CloseYourIt::Rails::ActiveJobExtension.monitor(job) { block.call } end end |
.monitor(job) ⇒ Object
Esegue il job arricchendo lo scope con tag/context; cattura l’errore (handled:false) e ri-solleva; resetta lo scope a fine job (no bleed tra job sullo stesso thread).
17 18 19 20 21 22 23 24 25 26 27 28 29 |
# File 'lib/closeyourit/rails/active_job_extension.rb', line 17 def self.monitor(job) return yield unless CloseYourIt.configuration.report_active_job_errors begin apply_job_scope(job) yield rescue Exception => e # rubocop:disable Lint/RescueException CloseYourIt.capture_exception(e, handled: false) raise ensure CloseYourIt::Scope.reset! end end |