Skip to content

Commit

Permalink
Merge pull request #238 from gottfrois/error-handler-parameters
Browse files Browse the repository at this point in the history
Allows to pass all message properties to error handlers.
  • Loading branch information
michaelklishin authored Aug 1, 2016
2 parents 69ba8db + 7c62d22 commit 459b837
Show file tree
Hide file tree
Showing 10 changed files with 23 additions and 13 deletions.
2 changes: 1 addition & 1 deletion hutch.gemspec
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ Gem::Specification.new do |gem|
end
gem.add_runtime_dependency 'carrot-top', '~> 0.0.7'
gem.add_runtime_dependency 'multi_json', '~> 1.11.2'
gem.add_runtime_dependency 'activesupport', '>= 3.0'
gem.add_runtime_dependency 'activesupport', '~> 4.0'
gem.add_development_dependency 'rspec', '~> 3.0'
gem.add_development_dependency 'simplecov', '~> 0.7.1'
gem.add_development_dependency 'yard', '~> 0.8'
Expand Down
3 changes: 2 additions & 1 deletion lib/hutch/error_handlers/airbrake.rb
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,8 @@ module ErrorHandlers
class Airbrake
include Logging

def handle(message_id, payload, consumer, ex)
def handle(properties, payload, consumer, ex)
message_id = properties.message_id
prefix = "message(#{message_id || '-'}): "
logger.error prefix + "Logging event to Airbrake"
logger.error prefix + "#{ex.class} - #{ex.message}"
Expand Down
3 changes: 2 additions & 1 deletion lib/hutch/error_handlers/honeybadger.rb
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,8 @@ module ErrorHandlers
class Honeybadger
include Logging

def handle(message_id, payload, consumer, ex)
def handle(properties, payload, consumer, ex)
message_id = properties.message_id
prefix = "message(#{message_id || '-'}): "
logger.error prefix + "Logging event to Honeybadger"
logger.error prefix + "#{ex.class} - #{ex.message}"
Expand Down
3 changes: 2 additions & 1 deletion lib/hutch/error_handlers/logger.rb
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@ module ErrorHandlers
class Logger
include Logging

def handle(message_id, payload, consumer, ex)
def handle(properties, payload, consumer, ex)
message_id = properties.message_id
prefix = "message(#{message_id || '-'}): "
logger.error prefix + "error in consumer '#{consumer}'"
logger.error prefix + "#{ex.class} - #{ex.message}"
Expand Down
3 changes: 2 additions & 1 deletion lib/hutch/error_handlers/sentry.rb
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,8 @@ def initialize
end
end

def handle(message_id, payload, consumer, ex)
def handle(properties, payload, consumer, ex)
message_id = properties.message_id
prefix = "message(#{message_id || '-'}): "
logger.error prefix + "Logging event to Sentry"
logger.error prefix + "#{ex.class} - #{ex.message}"
Expand Down
6 changes: 3 additions & 3 deletions lib/hutch/worker.rb
Original file line number Diff line number Diff line change
Expand Up @@ -68,16 +68,16 @@ def handle_message(consumer, delivery_info, properties, payload)
@broker.ack(delivery_info.delivery_tag)
rescue => ex
acknowledge_error(delivery_info, properties, @broker, ex)
handle_error(properties.message_id, payload, consumer, ex)
handle_error(properties, payload, consumer, ex)
end

def with_tracing(klass)
Hutch::Config[:tracer].new(klass)
end

def handle_error(message_id, payload, consumer, ex)
def handle_error(*args)
Hutch::Config[:error_handlers].each do |backend|
backend.handle(message_id, payload, consumer, ex)
backend.handle(*args)
end
end

Expand Down
3 changes: 2 additions & 1 deletion spec/hutch/error_handlers/airbrake_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@

it "logs the error to Airbrake" do
message_id = "1"
properties = OpenStruct.new(message_id: message_id)
payload = "{}"
consumer = double
ex = error
Expand All @@ -28,7 +29,7 @@
:cgi_data => ENV.to_hash,
}
expect(::Airbrake).to receive(:notify_or_ignore).with(ex, message)
error_handler.handle(message_id, payload, consumer, ex)
error_handler.handle(properties, payload, consumer, ex)
end
end
end
3 changes: 2 additions & 1 deletion spec/hutch/error_handlers/honeybadger_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@

it "logs the error to Honeybadger" do
message_id = "1"
properties = OpenStruct.new(message_id: message_id)
payload = "{}"
consumer = double
ex = error
Expand All @@ -30,7 +31,7 @@
}
}
expect(::Honeybadger).to receive(:notify_or_ignore).with(message)
error_handler.handle(message_id, payload, consumer, ex)
error_handler.handle(properties, payload, consumer, ex)
end
end
end
4 changes: 3 additions & 1 deletion spec/hutch/error_handlers/logger_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,14 @@
let(:error_handler) { Hutch::ErrorHandlers::Logger.new }

describe '#handle' do
let(:properties) { OpenStruct.new(message_id: "1") }
let(:payload) { "{}" }
let(:error) { double(message: "Stuff went wrong", class: "RuntimeError",
backtrace: ["line 1", "line 2"]) }

it "logs three separate lines" do
expect(Hutch::Logging.logger).to receive(:error).exactly(3).times
error_handler.handle("1", "{}", double, error)
error_handler.handle(properties, payload, double, error)
end
end
end
6 changes: 4 additions & 2 deletions spec/hutch/error_handlers/sentry_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@
let(:error_handler) { Hutch::ErrorHandlers::Sentry.new }

describe '#handle' do
let(:properties) { OpenStruct.new(message_id: "1") }
let(:payload) { "{}" }
let(:error) do
begin
raise "Stuff went wrong"
Expand All @@ -13,8 +15,8 @@
end

it "logs the error to Sentry" do
expect(Raven).to receive(:capture_exception).with(error, extra: { payload: "{}" })
error_handler.handle("1", "{}", double, error)
expect(Raven).to receive(:capture_exception).with(error, extra: { payload: payload })
error_handler.handle(properties, payload, double, error)
end
end
end

0 comments on commit 459b837

Please sign in to comment.