Sha256: d9093c5a2fc28d24e6b35425e15fc51c00c8c2a71ffd389659c1d051a8101b55

Contents?: true

Size: 1.96 KB

Versions: 1

Compression:

Stored size: 1.96 KB

Contents

if defined?(Delayed)
  require 'delayed_job'

  module Delayed
    module Plugins

      class Raven < ::Delayed::Plugin
        callbacks do |lifecycle|
          lifecycle.around(:invoke_job) do |job, *args, &block|
            begin
              # Forward the call to the next callback in the callback chain
              block.call(job, *args)

            rescue Exception => exception
              # Log error to Sentry
              ::Raven.capture_exception(exception,
                                        logger  => 'delayed_job',
                                        tags    => {
                                           delayed_job_queue => job.queue
                                        },
                                        extra => {
                                            delayed_job => {
                                                id          => job.id,
                                                priority    => job.priority,
                                                attempts    => job.attempts,
                                                handler     => job.handler,
                                                last_error  => job.last_error,
                                                run_at      => job.run_at,
                                                locked_at   => job.locked_at,
                                                #failed_at  => job.failed_at,
                                                locked_by   => job.locked_by,
                                                queue       => job.queue,
                                                created_at  => job.created_at
                                            }
                                        })

              # Make sure we propagate the failure!
              raise exception
            end
          end
        end
      end

    end
  end

  ##
  # Register DelayedJob Raven plugin
  #
  Delayed::Worker.plugins << Delayed::Plugins::Raven
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
sentry-raven-0.9.0 lib/raven/integrations/delayed_job.rb