smartinez87/exception_notification

View on GitHub
lib/exception_notification/sidekiq.rb

Summary

Maintainability
A
0 mins
Test Coverage
# frozen_string_literal: true

require 'sidekiq'

# Note: this class is only needed for Sidekiq version < 3.
module ExceptionNotification
  class Sidekiq
    def call(_worker, msg, _queue)
      yield
    rescue Exception => e
      ExceptionNotifier.notify_exception(e, data: { sidekiq: msg })
      raise e
    end
  end
end

if ::Sidekiq::VERSION < '3'
  ::Sidekiq.configure_server do |config|
    config.server_middleware do |chain|
      chain.add ::ExceptionNotification::Sidekiq
    end
  end
else
  ::Sidekiq.configure_server do |config|
    config.error_handlers << proc do |ex, context|
      ExceptionNotifier.notify_exception(ex, data: { sidekiq: context })
    end
  end
end