Fix failing cascade exception.

This commit is contained in:
José Valim
2011-12-03 11:38:25 +01:00
parent 0e17cf17eb
commit 2ab2077235
3 changed files with 12 additions and 2 deletions

View File

@@ -15,6 +15,7 @@ module ActionDispatch
begin
response = @app.call(env)
# TODO: Maybe this should be in the router itself
if response[1]['X-Cascade'] == 'pass'
raise ActionController::RoutingError, "No route matches [#{env['REQUEST_METHOD']}] #{env['PATH_INFO'].inspect}"
end
@@ -22,7 +23,7 @@ module ActionDispatch
raise exception if env['action_dispatch.show_exceptions'] == false
end
response ? response : render_exception(env, exception)
exception ? render_exception(env, exception) : response
end
private

View File

@@ -40,7 +40,7 @@ module ActionDispatch
raise exception if env['action_dispatch.show_exceptions'] == false
end
response ? response : render_exception_with_failsafe(env, exception)
response || render_exception_with_failsafe(env, exception)
end
private

View File

@@ -11,6 +11,8 @@ class DebugExceptionsTest < ActionDispatch::IntegrationTest
env['action_dispatch.show_detailed_exceptions'] = @detailed
req = ActionDispatch::Request.new(env)
case req.path
when "/pass"
[404, { "X-Cascade" => "pass" }, []]
when "/not_found"
raise ActionController::UnknownAction
when "/runtime_error"
@@ -46,6 +48,13 @@ class DebugExceptionsTest < ActionDispatch::IntegrationTest
end
end
test 'raise an exception on cascade pass' do
@app = ProductionApp
assert_raise ActionController::RoutingError do
get "/pass", {}, {'action_dispatch.show_exceptions' => true}
end
end
test "rescue with diagnostics message" do
@app = DevelopmentApp