Sha256: 3a018da23038026d4519b7ff965bf4bb055664001e5de3ed0b873ab73a2f2602

Contents?: true

Size: 1.21 KB

Versions: 16

Compression:

Stored size: 1.21 KB

Contents

# frozen_string_literal: true

module Airbrake
  module Rails
    # Enables support for exceptions occurring in ActiveJob jobs.
    module ActiveJob
      extend ActiveSupport::Concern

      def self.notify_airbrake(exception, job)
        notice = Airbrake.build_notice(exception)
        notice[:context][:component] = 'active_job'
        notice[:context][:action] = job.class.name
        notice[:params].merge!(job.serialize)

        Airbrake.notify(notice)

        raise exception
      end

      def self.perform(job, block)
        timing = Airbrake::Benchmark.measure do
          block.call
        end
      rescue StandardError => exception
        Airbrake.notify_queue(
          queue: job.class.name,
          error_count: 1,
          timing: 0.01,
        )
        raise exception
      else
        Airbrake.notify_queue(
          queue: job.class.name,
          error_count: 0,
          timing: timing,
        )
      end

      included do
        rescue_from(Exception) do |exception|
          Airbrake::Rails::ActiveJob.notify_airbrake(exception, self)
        end

        around_perform do |job, block|
          Airbrake::Rails::ActiveJob.perform(job, block)
        end
      end
    end
  end
end

Version data entries

16 entries across 16 versions & 1 rubygems

Version Path
airbrake-13.0.5 lib/airbrake/rails/active_job.rb
airbrake-13.0.4 lib/airbrake/rails/active_job.rb
airbrake-13.0.3 lib/airbrake/rails/active_job.rb
airbrake-13.0.2 lib/airbrake/rails/active_job.rb
airbrake-13.0.1 lib/airbrake/rails/active_job.rb
airbrake-13.0.0 lib/airbrake/rails/active_job.rb
airbrake-12.0.0 lib/airbrake/rails/active_job.rb
airbrake-11.0.3 lib/airbrake/rails/active_job.rb
airbrake-11.0.2 lib/airbrake/rails/active_job.rb
airbrake-11.0.1 lib/airbrake/rails/active_job.rb
airbrake-10.0.6 lib/airbrake/rails/active_job.rb
airbrake-11.0.0 lib/airbrake/rails/active_job.rb
airbrake-10.1.0.rc.1 lib/airbrake/rails/active_job.rb
airbrake-10.0.5 lib/airbrake/rails/active_job.rb
airbrake-10.0.4 lib/airbrake/rails/active_job.rb
airbrake-10.0.3 lib/airbrake/rails/active_job.rb