aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLaszlo Bacsi <lackac@lackac.hu>2009-01-02 10:46:48 -0600
committerJoshua Peek <josh@joshpeek.com>2009-01-02 10:46:48 -0600
commit606176a55b90c27687ae17f40fd1af0a86b62246 (patch)
treec62df060dbc483fa337226e23d9c0924aad315c2
parentf90160c6c1ec457f0b4b01c6fef78146271bc070 (diff)
downloadrails-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.rb4
-rw-r--r--actionpack/test/controller/rescue_test.rb7
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 =