summaryrefslogtreecommitdiff
path: root/lib/hashie/extensions
diff options
context:
space:
mode:
authorMichael Herold <michael.j.herold@gmail.com>2018-02-04 16:39:20 -0600
committerMichael Herold <michael.j.herold@gmail.com>2018-02-05 10:58:26 -0600
commita82c594710e1bc9460d3de4d2989cb700f4c3c7f (patch)
treeb465064e4dc1223e3148f4c5e99a0edc44dc2d76 /lib/hashie/extensions
parenta9d0e0ac7b6b3362480a9004d04ad7aa167fc193 (diff)
downloadhashie-a82c594710e1bc9460d3de4d2989cb700f4c3c7f.tar.gz
Ensure IndifferentAccess is injected after merge
During non-destructive merges (i.e. `#merge`), the `IndifferentAccess` mixin was failing to inject itself into the resulting Hash. This caused a `NoMethodError` to be thrown when attempting to perform the action. Now, we properly inject the mixin when necessary so the `#merge` method works.
Diffstat (limited to 'lib/hashie/extensions')
-rw-r--r--lib/hashie/extensions/indifferent_access.rb6
1 files changed, 4 insertions, 2 deletions
diff --git a/lib/hashie/extensions/indifferent_access.rb b/lib/hashie/extensions/indifferent_access.rb
index 55648a6..e6e670a 100644
--- a/lib/hashie/extensions/indifferent_access.rb
+++ b/lib/hashie/extensions/indifferent_access.rb
@@ -133,8 +133,10 @@ module Hashie
self
end
- def merge(*)
- super.convert!
+ def merge(*args)
+ result = super
+ IndifferentAccess.inject!(result) if hash_lacking_indifference?(result)
+ result.convert!
end
def merge!(*)