resque/resque

View on GitHub
lib/resque/failure/airbrake.rb

Summary

Maintainability
A
0 mins
Test Coverage
begin
  require 'airbrake'
rescue LoadError
  raise "Can't find 'airbrake' gem. Please add it to your Gemfile or install it."
end

module Resque
  module Failure
    class Airbrake < Base
      def self.configure(&block)
        Resque.logger.warn "This actually sets global Airbrake configuration, " \
          "which is probably not what you want."
        Resque::Failure.backend = self
        ::Airbrake.configure(&block)
      end

      def self.count(queue = nil, class_name = nil)
        # We can't get the total # of errors from Airbrake so we fake it
        # by asking Resque how many errors it has seen.
        Stat[:failed]
      end

      def save
        notify(
          exception,
          parameters: {
            payload_class: payload['class'].to_s,
            payload_args: payload['args'].inspect
          }
        )
      end

      private

      def notify(exception, options)
        if ::Airbrake.respond_to?(:notify_sync)
          ::Airbrake.notify_sync(exception, options)
        else
          # Older versions of Airbrake (< 5)
          ::Airbrake.notify(exception, options)
        end
      end
    end
  end
end