aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/lib/action_controller
diff options
context:
space:
mode:
authorAaron Patterson <aaron.patterson@gmail.com>2015-07-08 16:23:32 -0700
committerAaron Patterson <aaron.patterson@gmail.com>2015-07-08 16:23:32 -0700
commitf65fd25f0491919ef9db6e79be43f5d6f518374a (patch)
tree4b58ed3c87f19b01725b806cc2ea1ab9d86993e7 /actionpack/lib/action_controller
parentb5a9525932a3beb9ccb6040b34cfb75a19e5fb9c (diff)
downloadrails-f65fd25f0491919ef9db6e79be43f5d6f518374a.tar.gz
rails-f65fd25f0491919ef9db6e79be43f5d6f518374a.tar.bz2
rails-f65fd25f0491919ef9db6e79be43f5d6f518374a.zip
request objects are no longer recycled
Instead of trying to manually clear out a request object, lets just allocate a new one. The rack ENV is reused and cleaned (still), but the request object is not.
Diffstat (limited to 'actionpack/lib/action_controller')
-rw-r--r--actionpack/lib/action_controller/test_case.rb18
1 files changed, 8 insertions, 10 deletions
diff --git a/actionpack/lib/action_controller/test_case.rb b/actionpack/lib/action_controller/test_case.rb
index c63dde4ff6..6095f1b95e 100644
--- a/actionpack/lib/action_controller/test_case.rb
+++ b/actionpack/lib/action_controller/test_case.rb
@@ -73,15 +73,6 @@ module ActionController
@env['CONTENT_LENGTH'] = data.length.to_s
@env['rack.input'] = StringIO.new(data)
end
-
- def recycle!
- @formats = nil
- @env.delete_if { |k, v| k =~ /^(action_dispatch|rack)\.request/ }
- @env.delete_if { |k, v| k =~ /^action_dispatch\.rescue/ }
- @method = @request_method = nil
- @fullpath = @ip = @remote_ip = @protocol = nil
- @env['action_dispatch.request.query_parameters'] = {}
- end
end
class TestResponse < ActionDispatch::TestResponse
@@ -451,7 +442,7 @@ module ActionController
@request.env['HTTP_COOKIE'] = cookies.to_header
@request.env['action_dispatch.cookies'] = nil
- @request.recycle!
+ @request = TestRequest.new scrub_env!(@request.env), @request.session
@response = build_response @response_klass
@response.request = @request
@controller.recycle!
@@ -546,6 +537,13 @@ module ActionController
private
+ def scrub_env!(env)
+ env.delete_if { |k, v| k =~ /^(action_dispatch|rack)\.request/ }
+ env.delete_if { |k, v| k =~ /^action_dispatch\.rescue/ }
+ env['action_dispatch.request.query_parameters'] = {}
+ env
+ end
+
def process_with_kwargs(http_method, action, *args)
if kwarg_request?(args)
args.first.merge!(method: http_method)