Sha256: 1db8ed8f13e591f922746c9334cc51a46ad4b85c65bf4847e4c2607800c56dfb

Contents?: true

Size: 1.87 KB

Versions: 1

Compression:

Stored size: 1.87 KB

Contents

Rollbar.plugins.define('active_job') do
  dependency { !configuration.disable_monkey_patch }
  dependency { !configuration.disable_action_mailer_monkey_patch }

  execute do
    module Rollbar
      # Report any uncaught errors in a job to Rollbar and reraise
      module ActiveJob
        def self.included(base)
          base.send :rescue_from, Exception do |exception|
            job_data = {
              :job => self.class.name,
              :use_exception_level_filters => true
            }

            # When included in ActionMailer, the handler is called twice.
            # This detects the execution that has the expected state.
            if defined?(ActionMailer::Base) && self.class.ancestors.include?(ActionMailer::Base)
              job_data[:action] = action_name
              job_data[:params] = @params

              Rollbar.error(exception, job_data)

            # This detects other supported integrations.
            elsif defined?(arguments)
              job_data[:arguments] = \
                if self.class.respond_to?(:log_arguments?) && !self.class.log_arguments?
                  arguments.map(&Rollbar::Scrubbers.method(:scrub_value))
                else
                  arguments
                end
              job_data[:job_id] = job_id if defined?(job_id)

              Rollbar.error(exception, job_data)
            end

            raise exception
          end
        end
      end
    end

    if defined?(ActiveSupport) && ActiveSupport.respond_to?(:on_load)
      ActiveSupport.on_load(:action_mailer) do
        if defined?(ActionMailer::MailDeliveryJob) # Rails >= 6.0
          ActionMailer::Base.send(:include, Rollbar::ActiveJob)
        elsif defined?(ActionMailer::DeliveryJob) # Rails < 6.0
          ActionMailer::DeliveryJob.send(:include,
                                         Rollbar::ActiveJob)
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
rollbar-3.5.1 lib/rollbar/plugins/active_job.rb