sentry-raven/lib/raven/integrations/sidekiq/error_handler.rb
require 'raven/utils/context_filter'
module Raven
module Sidekiq
class ErrorHandler
SIDEKIQ_NAME = "Sidekiq".freeze
def call(ex, context)
context = Utils::ContextFilter.filter_context(context)
Raven.context.transaction.push transaction_from_context(context)
Raven.capture_exception(
ex,
:message => ex.message,
:extra => { :sidekiq => context }
)
Context.clear!
BreadcrumbBuffer.clear!
end
private
# this will change in the future:
# https://github.com/mperham/sidekiq/pull/3161
def transaction_from_context(context)
classname = (context["wrapped"] || context["class"] ||
(context[:job] && (context[:job]["wrapped"] || context[:job]["class"]))
)
if classname
"#{SIDEKIQ_NAME}/#{classname}"
elsif context[:event]
"#{SIDEKIQ_NAME}/#{context[:event]}"
else
SIDEKIQ_NAME
end
end
end
end
end