Sha256: c2d41c5b5b29b28774984fbd94c275b66873333b103b4e3b62052f93b89b2af5

Contents?: true

Size: 1.81 KB

Versions: 17

Compression:

Stored size: 1.81 KB

Contents

require 'honeybadger/plugin'
require 'honeybadger'

module Honeybadger
  module Plugins
    module Resque
      module Extension
        def around_perform_with_honeybadger(*args)
          Honeybadger.flush do
            begin
              Honeybadger::Trace.instrument("#{self.name}#perform", { source: 'resque', class: self.name }) do
                yield
              end
            rescue Exception => e
              Honeybadger.notify(e, parameters: { job_arguments: args })
              raise e
            end
          end
        ensure
          Honeybadger.context.clear!
        end
      end

      module Installer
        def self.included(base)
          base.send(:alias_method, :payload_class_without_honeybadger, :payload_class)
          base.send(:alias_method, :payload_class, :payload_class_with_honeybadger)
        end

        def payload_class_with_honeybadger
          payload_class_without_honeybadger.tap do |klass|
            unless klass.respond_to?(:around_perform_with_honeybadger)
              klass.instance_eval do
                extend(::Honeybadger::Plugins::Resque::Extension)
              end
            end
          end
        end
      end

      Plugin.register do
        requirement { defined?(::Resque::Job) }

        requirement do
          if resque_honeybadger = defined?(::Resque::Failure::Honeybadger)
            logger.warn("Support for Resque has been moved " \
                        "to the honeybadger gem. Please remove " \
                        "resque-honeybadger from your " \
                        "Gemfile.")
          end
          !resque_honeybadger
        end

        execution do
          ::Resque::Job.send(:include, Installer)
          ::Resque.after_fork do |job|
            Honeybadger::Agent.fork
          end
        end
      end
    end
  end
end

Version data entries

17 entries across 17 versions & 2 rubygems

Version Path
honeybadger-2.4.1 lib/honeybadger/plugins/resque.rb
honeybadger-2.4.0 lib/honeybadger/plugins/resque.rb
honeybadger-2.3.3 lib/honeybadger/plugins/resque.rb
honeybadger-2.3.2 lib/honeybadger/plugins/resque.rb
honeybadger-2.3.2.beta.1 lib/honeybadger/plugins/resque.rb
honeybadger-2.3.1 lib/honeybadger/plugins/resque.rb
honeybadger-2.3.0 lib/honeybadger/plugins/resque.rb
honeybadger-2.2.0 lib/honeybadger/plugins/resque.rb
honeybadger-2.2.0.beta.1 lib/honeybadger/plugins/resque.rb
honeybadger-2.1.6.beta.1 lib/honeybadger/plugins/resque.rb
honeybadger-2.1.5 lib/honeybadger/plugins/resque.rb
honeybadger-2.1.4 lib/honeybadger/plugins/resque.rb
honeybadger-2.1.3 lib/honeybadger/plugins/resque.rb
honeybadger-2.1.1 lib/honeybadger/plugins/resque.rb
honeybadger-mubi-2.1.1 lib/honeybadger/plugins/resque.rb
honeybadger-2.1.0 lib/honeybadger/plugins/resque.rb
honeybadger-2.1.0.beta.1 lib/honeybadger/plugins/resque.rb