diff options
author | Kir Shatrov <shatrov@me.com> | 2016-09-22 11:36:23 -0400 |
---|---|---|
committer | Kir Shatrov <shatrov@me.com> | 2016-09-22 11:36:23 -0400 |
commit | 7e350c67057affccde176eeeffcffbe10806feda (patch) | |
tree | 40728e9380876d85dce75797b8b2d648af4fb095 /activesupport | |
parent | cf5f55cd30aef0f90300c7c8f333060fe258cd8a (diff) | |
download | rails-7e350c67057affccde176eeeffcffbe10806feda.tar.gz rails-7e350c67057affccde176eeeffcffbe10806feda.tar.bz2 rails-7e350c67057affccde176eeeffcffbe10806feda.zip |
Fix memoization bug on ActionDispatch::TestRequest#request_method=
TestRequest have been overrriding request_method setter since 2009,
but the actual implementation in Request (not TestRequest) has been
changed since that. Now it's also using @request_method instance
variable to keep the state.
The override in TestRequest have not been calling `super`, which caused
a bug that after accessing #requst_method the value was memoized and
then we've never been able to change it anymore:
```
req = ActionDispatch::TestRequest.create
puts "was: #{req.request_method}" # memoized here
req.request_method = "POST"
puts "became: #{req.request_method}"
```
output:
```
was: GET
became: GET
```
Since the whole purpose of overriding the setter in TestRequest is to
upcase it, I'm changing it to `super(method.to_s.upcase)`
Diffstat (limited to 'activesupport')
0 files changed, 0 insertions, 0 deletions