Sha256: 6f2dad5f94cd471c1ec60ad430f593714d49610d450e1e629e591cb20b8a07bc

Contents?: true

Size: 1.61 KB

Versions: 20

Compression:

Stored size: 1.61 KB

Contents

require 'delayed_job'

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

::Bugsnag.configuration.internal_middleware.use(::Bugsnag::Middleware::DelayedJob)

module Delayed
  module Plugins
    class Bugsnag < ::Delayed::Plugin
      ##
      # DelayedJob doesn't have an easy way to fetch its version, but we can use
      # Gem.loaded_specs to get the version instead
      def self.delayed_job_version
        ::Gem.loaded_specs['delayed_job'].version.to_s
      rescue StandardError
        # Explicitly return nil to prevent Rubocop complaining of a suppressed exception
        nil
      end

      callbacks do |lifecycle|
        lifecycle.around(:invoke_job) do |job, *args, &block|
          begin
            ::Bugsnag.configuration.detected_app_type = 'delayed_job'
            ::Bugsnag.configuration.runtime_versions['delayed_job'] = delayed_job_version if defined?(::Gem)
            ::Bugsnag.configuration.set_request_data(:delayed_job, job)

            block.call(job, *args)
          rescue Exception => exception
            ::Bugsnag.notify(exception, true) do |report|
              report.severity = "error"
              report.severity_reason = {
                :type => ::Bugsnag::Report::UNHANDLED_EXCEPTION_MIDDLEWARE,
                :attributes => {
                  :framework => "DelayedJob"
                }
              }
            end
            raise exception
          ensure
            ::Bugsnag.configuration.clear_request_data
          end
        end
      end
    end
  end
end

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

Version data entries

20 entries across 20 versions & 1 rubygems

Version Path
bugsnag-6.27.1 lib/bugsnag/integrations/delayed_job.rb
bugsnag-6.26.4 lib/bugsnag/integrations/delayed_job.rb
bugsnag-6.26.3 lib/bugsnag/integrations/delayed_job.rb
bugsnag-6.26.2 lib/bugsnag/integrations/delayed_job.rb
bugsnag-6.26.1 lib/bugsnag/integrations/delayed_job.rb
bugsnag-6.26.0 lib/bugsnag/integrations/delayed_job.rb
bugsnag-6.25.2 lib/bugsnag/integrations/delayed_job.rb
bugsnag-6.25.1 lib/bugsnag/integrations/delayed_job.rb
bugsnag-6.25.0 lib/bugsnag/integrations/delayed_job.rb
bugsnag-6.24.2 lib/bugsnag/integrations/delayed_job.rb
bugsnag-6.24.1 lib/bugsnag/integrations/delayed_job.rb
bugsnag-6.24.0 lib/bugsnag/integrations/delayed_job.rb
bugsnag-6.23.0 lib/bugsnag/integrations/delayed_job.rb
bugsnag-6.22.1 lib/bugsnag/integrations/delayed_job.rb
bugsnag-6.21.0 lib/bugsnag/integrations/delayed_job.rb
bugsnag-6.20.0 lib/bugsnag/integrations/delayed_job.rb
bugsnag-6.19.0 lib/bugsnag/integrations/delayed_job.rb
bugsnag-6.18.0 lib/bugsnag/integrations/delayed_job.rb
bugsnag-6.17.0 lib/bugsnag/integrations/delayed_job.rb
bugsnag-6.16.0 lib/bugsnag/integrations/delayed_job.rb