Permalink
Browse files

Refactor to handle the X-Cascade without having to raise an exception

  • Loading branch information...
1 parent 9933859 commit 117cad8f05ce3dc48979e53a6f8ee5a5add7dede @krekoten krekoten committed with jeremy Oct 18, 2010
Showing with 12 additions and 12 deletions.
  1. +12 −12 actionpack/lib/action_dispatch/middleware/show_exceptions.rb
@@ -43,20 +43,20 @@ def initialize(app, consider_all_requests_local = false)
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

0 comments on commit 117cad8

Please sign in to comment.