diff options
author | Laszlo Bacsi <lackac@lackac.hu> | 2009-01-02 10:46:48 -0600 |
---|---|---|
committer | Joshua Peek <josh@joshpeek.com> | 2009-01-02 10:46:48 -0600 |
commit | 606176a55b90c27687ae17f40fd1af0a86b62246 (patch) | |
tree | c62df060dbc483fa337226e23d9c0924aad315c2 | |
parent | f90160c6c1ec457f0b4b01c6fef78146271bc070 (diff) | |
download | rails-606176a55b90c27687ae17f40fd1af0a86b62246.tar.gz rails-606176a55b90c27687ae17f40fd1af0a86b62246.tar.bz2 rails-606176a55b90c27687ae17f40fd1af0a86b62246.zip |
Fixed call_with_exception for Routing Errors [#1684 state:resolved]
Signed-off-by: Joshua Peek <josh@joshpeek.com>
-rw-r--r-- | actionpack/lib/action_controller/rescue.rb | 4 | ||||
-rw-r--r-- | actionpack/test/controller/rescue_test.rb | 7 |
2 files changed, 9 insertions, 2 deletions
diff --git a/actionpack/lib/action_controller/rescue.rb b/actionpack/lib/action_controller/rescue.rb index de35b53872..8824d983b4 100644 --- a/actionpack/lib/action_controller/rescue.rb +++ b/actionpack/lib/action_controller/rescue.rb @@ -60,8 +60,8 @@ module ActionController #:nodoc: module ClassMethods def call_with_exception(env, exception) #:nodoc: - request = env["actioncontroller.rescue.request"] - response = env["actioncontroller.rescue.response"] + request = env["actioncontroller.rescue.request"] ||= Request.new(env) + response = env["actioncontroller.rescue.response"] ||= Response.new new.process(request, response, :rescue_action, exception) end end diff --git a/actionpack/test/controller/rescue_test.rb b/actionpack/test/controller/rescue_test.rb index d45ba3c3a1..8728c9fca3 100644 --- a/actionpack/test/controller/rescue_test.rb +++ b/actionpack/test/controller/rescue_test.rb @@ -390,6 +390,13 @@ class RescueControllerTest < ActionController::TestCase assert_equal "no way", @response.body end + def test_rescue_dispatcher_exceptions_without_request_set + @request.env['REQUEST_URI'] = '/no_way' + response = RescueController.call_with_exception(@request.env, ActionController::RoutingError.new("Route not found")) + assert_kind_of ActionController::Response, response + assert_equal "no way", response.body + end + protected def with_all_requests_local(local = true) old_local, ActionController::Base.consider_all_requests_local = |