diff options
author | claudiob <claudiob@gmail.com> | 2014-09-23 11:18:11 -0700 |
---|---|---|
committer | claudiob <claudiob@gmail.com> | 2014-10-17 09:11:04 -0700 |
commit | d43b1b0a9eb5bc46818224d0939223ea31a41b00 (patch) | |
tree | e4f2e0dd680bc261f9e898843e714ab9e6fd6e1e /activesupport/test | |
parent | 8a80e3b6c446931330ad07130603712e8d0a2ff3 (diff) | |
download | rails-d43b1b0a9eb5bc46818224d0939223ea31a41b00.tar.gz rails-d43b1b0a9eb5bc46818224d0939223ea31a41b00.tar.bz2 rails-d43b1b0a9eb5bc46818224d0939223ea31a41b00.zip |
Add necessary 'require reverse_merge' to HAWI.rb
Hashes with indifferent access should support `reverse_merge` out-of-the-box
but they don't; for instance the following code fails:
```ruby
require 'active_support'
require 'active_support/hash_with_indifferent_access'
hash = HashWithIndifferentAccess.new key: :old_value
hash.reverse_merge key: :new_value
```
This PR fixes the case above by simply requiring
`active_support/core_ext/hash/reverse_merge` in `hash_with_indifferent_access.rb`
and adding a test that confirms the fix.
---
Here are more details about the bugfix.
Currently, `reverse_merge` is [defined in HashWithIndifferentAccess](https://github.com/rails/rails/blob/4e8ea13ba1a0870905a46fac5f232d9f41eef8a4/activesupport/lib/active_support/hash_with_indifferent_access.rb#L208)
by invoking `super`, that is by invoking `Hash#reverse_merge`:
```ruby
def reverse_merge(other_hash)
super(self.class.new_from_hash_copying_default(other_hash))
end
```
However, Ruby's `Hash` does not have the `reverse_merge` by default: it must be
added by ActiveSupport, and that requires the following line of code to be
present:
```ruby
require 'active_support/core_ext/hash/reverse_merge'
```
Diffstat (limited to 'activesupport/test')
-rw-r--r-- | activesupport/test/hash_with_indifferent_access_test.rb | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/activesupport/test/hash_with_indifferent_access_test.rb b/activesupport/test/hash_with_indifferent_access_test.rb new file mode 100644 index 0000000000..843994147b --- /dev/null +++ b/activesupport/test/hash_with_indifferent_access_test.rb @@ -0,0 +1,10 @@ +require 'abstract_unit' +require 'active_support/hash_with_indifferent_access' + +class HashWithIndifferentAccessTest < ActiveSupport::TestCase + def test_reverse_merge + hash = HashWithIndifferentAccess.new key: :old_value + hash.reverse_merge! key: :new_value + assert_equal :old_value, hash[:key] + end +end
\ No newline at end of file |