diff options
author | Aaron Patterson <aaron.patterson@gmail.com> | 2015-07-08 16:23:32 -0700 |
---|---|---|
committer | Aaron Patterson <aaron.patterson@gmail.com> | 2015-07-08 16:23:32 -0700 |
commit | f65fd25f0491919ef9db6e79be43f5d6f518374a (patch) | |
tree | 4b58ed3c87f19b01725b806cc2ea1ab9d86993e7 /actionpack | |
parent | b5a9525932a3beb9ccb6040b34cfb75a19e5fb9c (diff) | |
download | rails-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')
-rw-r--r-- | actionpack/lib/action_controller/test_case.rb | 18 | ||||
-rw-r--r-- | actionpack/test/controller/test_case_test.rb | 6 |
2 files changed, 8 insertions, 16 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) diff --git a/actionpack/test/controller/test_case_test.rb b/actionpack/test/controller/test_case_test.rb index ffb505da06..270052ae9f 100644 --- a/actionpack/test/controller/test_case_test.rb +++ b/actionpack/test/controller/test_case_test.rb @@ -718,12 +718,6 @@ XML assert_equal 'it works', session[:symbol], "Test session hash should allow indifferent access" end - def test_header_properly_reset_after_get_request - get :test_params - @request.recycle! - assert_nil @request.instance_variable_get("@request_method") - end - def test_deprecated_params_reset_between_post_requests assert_deprecated { post :no_op, foo: "bar" } assert_equal "bar", @request.params[:foo] |