Sha256: 1d7a2c847fc60c89dac858478178b53f7110d5ed9e1cafce6ede9e546f278ae4

Contents?: true

Size: 1.68 KB

Versions: 39

Compression:

Stored size: 1.68 KB

Contents

require 'delayed_job'

# See Issue #99
unless defined?(Delayed::Plugin)
  raise LoadError, "bugsnag requires delayed_job > 3.x"
end

unless defined? Delayed::Plugins::Bugsnag
  module Delayed
    module Plugins


      class Bugsnag < Plugin
        module Notify
          def error(job, error)
            overrides = {
              :job => {
                :class => job.class.name,
                :id => job.id,
              }
            }
            if payload = job.payload_object
              p = {
                :class => payload.class.name,
              }
              p[:id]           = payload.id           if payload.respond_to?(:id)
              p[:display_name] = payload.display_name if payload.respond_to?(:display_name)
              p[:method_name]  = payload.method_name  if payload.respond_to?(:method_name)
              p[:args]         = payload.args         if payload.respond_to?(:args)
              if payload.is_a?(::Delayed::PerformableMethod) && (object = payload.object)
                p[:object] = {
                  :class => object.class.name,
                }
                p[:object][:id] = object.id if object.respond_to?(:id)
              end
              overrides[:job][:payload] = p
            end

            ::Bugsnag.auto_notify(error, overrides)

            super if defined?(super)
          end
        end

        callbacks do |lifecycle|
          lifecycle.before(:invoke_job) do |job|
            payload = job.payload_object
            payload = payload.object if payload.is_a? Delayed::PerformableMethod
            payload.extend Notify
          end
        end
      end
    end
  end

  Delayed::Worker.plugins << Delayed::Plugins::Bugsnag
end

Version data entries

39 entries across 39 versions & 2 rubygems

Version Path
bugsnag-5.2.0 lib/bugsnag/delayed_job.rb
bugsnag-5.1.0 lib/bugsnag/delayed_job.rb
bugsnag-5.0.1 lib/bugsnag/delayed_job.rb
bugsnag-5.0.0 lib/bugsnag/delayed_job.rb
bugsnag-4.2.1 lib/bugsnag/delayed_job.rb
bugsnag-4.2.0 lib/bugsnag/delayed_job.rb
bugsnag-4.1.0 lib/bugsnag/delayed_job.rb
bugsnag-4.0.2 lib/bugsnag/delayed_job.rb
bugsnag-4.0.1 lib/bugsnag/delayed_job.rb
bugsnag-4.0.0 lib/bugsnag/delayed_job.rb
bugsnag-3.0.0 lib/bugsnag/delayed_job.rb
bugsnag-2.8.13 lib/bugsnag/delayed_job.rb
bugsnag-maglev--2.8.12 lib/bugsnag/delayed_job.rb
bugsnag-2.8.12 lib/bugsnag/delayed_job.rb
bugsnag-2.8.11 lib/bugsnag/delayed_job.rb
bugsnag-2.8.10 lib/bugsnag/delayed_job.rb
bugsnag-2.8.9 lib/bugsnag/delayed_job.rb
bugsnag-2.8.8 lib/bugsnag/delayed_job.rb
bugsnag-2.8.7 lib/bugsnag/delayed_job.rb
bugsnag-2.8.6 lib/bugsnag/delayed_job.rb