From 366e7854ac41699217e8cad1a336ab845c781359 Mon Sep 17 00:00:00 2001 From: Krekoten' Marjan Date: Tue, 19 Oct 2010 00:05:22 +0300 Subject: Refactor to handle the X-Cascade without having to raise an exception --- .../action_dispatch/middleware/show_exceptions.rb | 24 +++++++++++----------- 1 file changed, 12 insertions(+), 12 deletions(-) (limited to 'actionpack/lib') diff --git a/actionpack/lib/action_dispatch/middleware/show_exceptions.rb b/actionpack/lib/action_dispatch/middleware/show_exceptions.rb index 71e736ce9f..936fd548b9 100644 --- a/actionpack/lib/action_dispatch/middleware/show_exceptions.rb +++ b/actionpack/lib/action_dispatch/middleware/show_exceptions.rb @@ -43,20 +43,20 @@ module ActionDispatch end def call(env) - status, headers, body = @app.call(env) - - # Only this middleware cares about RoutingError. So, let's just raise - # it here. - # TODO: refactor this middleware to handle the X-Cascade scenario without - # having to raise an exception. - if headers['X-Cascade'] == 'pass' - raise ActionController::RoutingError, "No route matches #{env['PATH_INFO'].inspect}" + begin + status, headers, body = @app.call(env) + exception = nil + + # Only this middleware cares about RoutingError. So, let's just raise + # it here. + if headers['X-Cascade'] == 'pass' + exception = ActionController::RoutingError.new("No route matches #{env['PATH_INFO'].inspect}") + end + rescue Exception => exception end - - [status, headers, body] - rescue Exception => exception raise exception if env['action_dispatch.show_exceptions'] == false - render_exception(env, exception) + + exception ? render_exception(env, exception) : [status, headers, body] end private -- cgit v1.2.3