aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/lib/action_dispatch/middleware
diff options
context:
space:
mode:
authorCarl Lerche <carllerche@mac.com>2010-04-30 16:40:42 -0700
committerCarl Lerche <carllerche@mac.com>2010-04-30 16:40:42 -0700
commit6c280f3398966ffba45069500ff43d632513fe44 (patch)
treeb05826e154f04707d0abeefcab1786109b46e6a8 /actionpack/lib/action_dispatch/middleware
parent95c98799a4871fb3eb92729d0a3db72a823b070a (diff)
downloadrails-6c280f3398966ffba45069500ff43d632513fe44.tar.gz
rails-6c280f3398966ffba45069500ff43d632513fe44.tar.bz2
rails-6c280f3398966ffba45069500ff43d632513fe44.zip
RouteSet does not raise ActionController::RoutingError when no routes match anymore. Instead, it follows the X-Cascade convention. ShowExceptions checks for X-Cascade so that the routing error page can still be displayed.
Diffstat (limited to 'actionpack/lib/action_dispatch/middleware')
-rw-r--r--actionpack/lib/action_dispatch/middleware/show_exceptions.rb12
1 files changed, 11 insertions, 1 deletions
diff --git a/actionpack/lib/action_dispatch/middleware/show_exceptions.rb b/actionpack/lib/action_dispatch/middleware/show_exceptions.rb
index 43440e5f7c..12a93d6a24 100644
--- a/actionpack/lib/action_dispatch/middleware/show_exceptions.rb
+++ b/actionpack/lib/action_dispatch/middleware/show_exceptions.rb
@@ -45,7 +45,17 @@ module ActionDispatch
end
def call(env)
- @app.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}"
+ end
+
+ [status, headers, body]
rescue Exception => exception
raise exception if env['action_dispatch.show_exceptions'] == false
render_exception(env, exception)