aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorthedarkone <thedarkone2@gmail.com>2013-08-06 17:03:29 +0200
committerthedarkone <thedarkone2@gmail.com>2013-08-06 17:04:02 +0200
commita0907bbdad0b8cbead9c8d295b9037036ec650d0 (patch)
tree97d493ad185ef3ab12129a1efb596b1aa3b67ef5
parent3af8a91c384761ab8772c57ab1ee0ea1b8fe69e7 (diff)
downloadrails-a0907bbdad0b8cbead9c8d295b9037036ec650d0.tar.gz
rails-a0907bbdad0b8cbead9c8d295b9037036ec650d0.tar.bz2
rails-a0907bbdad0b8cbead9c8d295b9037036ec650d0.zip
"Naked" rescue clauses only catch StandardError subclasses.
Similar to #11497.
-rw-r--r--railties/lib/rails/rack/logger.rb2
-rw-r--r--railties/test/rack_logger_test.rb7
2 files changed, 6 insertions, 3 deletions
diff --git a/railties/lib/rails/rack/logger.rb b/railties/lib/rails/rack/logger.rb
index ad5fdcf648..ef4cdcb080 100644
--- a/railties/lib/rails/rack/logger.rb
+++ b/railties/lib/rails/rack/logger.rb
@@ -38,7 +38,7 @@ module Rails
resp = @app.call(env)
resp[2] = ::Rack::BodyProxy.new(resp[2]) { finish(request) }
resp
- rescue
+ rescue Exception
finish(request)
raise
ensure
diff --git a/railties/test/rack_logger_test.rb b/railties/test/rack_logger_test.rb
index 635a8a8865..6ebd47fff9 100644
--- a/railties/test/rack_logger_test.rb
+++ b/railties/test/rack_logger_test.rb
@@ -57,11 +57,14 @@ module Rails
end
def test_notification_on_raise
- logger = TestLogger.new { raise }
+ logger = TestLogger.new do
+ # using an exception class that is not a StandardError subclass on purpose
+ raise NotImplementedError
+ end
assert_difference('subscriber.starts.length') do
assert_difference('subscriber.finishes.length') do
- assert_raises(RuntimeError) do
+ assert_raises(NotImplementedError) do
logger.call 'REQUEST_METHOD' => 'GET'
end
end