From 8494cf32880985c528b37a6ab106e14d8b33b89b Mon Sep 17 00:00:00 2001 From: Robert Clancy Date: Wed, 3 Jun 2015 17:47:58 +0100 Subject: [PATCH 1/2] Capture exceptions swallowed by rails ActionDispatch's ShowExceptions swallows exceptions and stores the cause in a rack env variable "action_dispatch.exception". Use this to report on any exceptions swallowed by ShowExceptions. --- lib/raven/integrations/rack.rb | 2 +- spec/raven/integrations/rack_spec.rb | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/lib/raven/integrations/rack.rb b/lib/raven/integrations/rack.rb index 50ca1fe50..bee980f02 100644 --- a/lib/raven/integrations/rack.rb +++ b/lib/raven/integrations/rack.rb @@ -60,7 +60,7 @@ def call(env) raise end - error = env['rack.exception'] || env['sinatra.error'] + error = env['rack.exception'] || env['sinatra.error'] || env['action_dispatch.exception'] Raven::Rack.capture_exception(error, env) if error diff --git a/spec/raven/integrations/rack_spec.rb b/spec/raven/integrations/rack_spec.rb index a39eb4f59..05866d1bd 100644 --- a/spec/raven/integrations/rack_spec.rb +++ b/spec/raven/integrations/rack_spec.rb @@ -46,6 +46,22 @@ stack.call(env) end + it 'should capture rails errors' do + exception = build_exception + env = {} + + expect(Raven::Rack).to receive(:capture_exception).with(exception, env) + + app = lambda do |e| + e['action_dispatch.exception'] = exception + [200, {}, ['okay']] + end + + stack = Raven::Rack.new(app) + + stack.call(env) + end + it 'should clear context after app is called' do Raven::Context.current.tags[:environment] = :test From dfe2218a7892e5c20905178d15ae5a1381d98960 Mon Sep 17 00:00:00 2001 From: Robert Clancy Date: Wed, 15 Jul 2015 08:31:02 +0100 Subject: [PATCH 2/2] Change message of test. - PR feedback --- spec/raven/integrations/rack_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/raven/integrations/rack_spec.rb b/spec/raven/integrations/rack_spec.rb index 05866d1bd..d63e3cde3 100644 --- a/spec/raven/integrations/rack_spec.rb +++ b/spec/raven/integrations/rack_spec.rb @@ -46,7 +46,7 @@ stack.call(env) end - it 'should capture rails errors' do + it 'should capture rails errors when ActionDispatch::ShowExceptions is enabled' do exception = build_exception env = {}