From 08a0c78581cc7c3140fa1de0704c25be0365775f Mon Sep 17 00:00:00 2001 From: James Miller Date: Wed, 22 Feb 2012 11:47:02 -0800 Subject: [PATCH] Switch airbrake to generic ExceptionHandler class and add support for ::Exceptional --- .../{airbrake.rb => exception_handler.rb} | 17 +++++++++++++---- lib/sidekiq/processor.rb | 4 ++-- 2 files changed, 15 insertions(+), 6 deletions(-) rename lib/sidekiq/middleware/server/{airbrake.rb => exception_handler.rb} (53%) diff --git a/lib/sidekiq/middleware/server/airbrake.rb b/lib/sidekiq/middleware/server/exception_handler.rb similarity index 53% rename from lib/sidekiq/middleware/server/airbrake.rb rename to lib/sidekiq/middleware/server/exception_handler.rb index aa096ec0..e26284c3 100644 --- a/lib/sidekiq/middleware/server/airbrake.rb +++ b/lib/sidekiq/middleware/server/exception_handler.rb @@ -3,7 +3,7 @@ require 'sidekiq/util' module Sidekiq module Middleware module Server - class Airbrake + class ExceptionHandler include Util def call(*args) yield @@ -11,20 +11,29 @@ module Sidekiq logger.warn ex logger.warn ex.backtrace.join("\n") send_to_airbrake(args[1], ex) if defined?(::Airbrake) + send_to_exceptional(args[1], ex) if defined?(::Exceptional) raise end private def send_to_airbrake(msg, ex) + logger.debug "Reporting error to Airbrake" ::Airbrake.notify(:error_class => ex.class.name, :error_message => "#{ex.class.name}: #{ex.message}", :parameters => msg) end + + def send_to_exceptional(msg, ex) + if ::Exceptional::Config.should_send_to_api? + logger.debug "Reporting error to Exceptional" + ::Exceptional.context(msg) + ::Exceptional::Remote.error(::Exceptional::ExceptionData.new(ex)) + else + logger.debug "Not reporting error to Exceptional" + end + end end end end end - - - diff --git a/lib/sidekiq/processor.rb b/lib/sidekiq/processor.rb index 3264a5f1..4657ed06 100644 --- a/lib/sidekiq/processor.rb +++ b/lib/sidekiq/processor.rb @@ -2,7 +2,7 @@ require 'celluloid' require 'sidekiq/util' require 'sidekiq/middleware/server/active_record' -require 'sidekiq/middleware/server/airbrake' +require 'sidekiq/middleware/server/exception_handler' require 'sidekiq/middleware/server/unique_jobs' require 'sidekiq/middleware/server/failure_jobs' @@ -17,7 +17,7 @@ module Sidekiq def self.default_middleware Middleware::Chain.new do |m| - m.add Middleware::Server::Airbrake + m.add Middleware::Server::ExceptionHandler m.add Middleware::Server::UniqueJobs m.add Middleware::Server::ActiveRecord end