rails/rails — pull request #17300 by claudiob (2014-10-17 16:19:42+00:00)
Title: 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
# => NoMethodError: super: no superclass method `reverse_merge' for {"key"=>:old_value}:ActiveSupport::HashWithIndifferentAccess

```

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'
```