diff options
| author | Bobby McDonald <BobbyMcWho@users.noreply.github.com> | 2020-01-14 08:50:43 -0500 |
|---|---|---|
| committer | Daniel Doubrovkine (dB.) @dblockdotorg <dblock@dblock.org> | 2020-01-14 08:50:43 -0500 |
| commit | 25fe2f747ee06e563808e08493ec7a471cc82b26 (patch) | |
| tree | 131c87eb22d54097a58d6011e1a8c5669d7c0f51 /lib | |
| parent | d2071d82a2ceb2513bc0ff9c827ab3bc2a80b072 (diff) | |
| download | hashie-25fe2f747ee06e563808e08493ec7a471cc82b26.tar.gz | |
Fix except use in Mash#load (#508)
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/hashie/extensions/deep_merge.rb | 2 | ||||
| -rw-r--r-- | lib/hashie/mash.rb | 5 |
2 files changed, 5 insertions, 2 deletions
diff --git a/lib/hashie/extensions/deep_merge.rb b/lib/hashie/extensions/deep_merge.rb index 1890e8f..24fa679 100644 --- a/lib/hashie/extensions/deep_merge.rb +++ b/lib/hashie/extensions/deep_merge.rb @@ -38,6 +38,8 @@ module Hashie hash[k] = if hash.key?(k) && hash[k].is_a?(::Hash) && v.is_a?(::Hash) _recursive_merge(hash[k], v, &block) + elsif v.is_a?(::Hash) + _recursive_merge({}, v, &block) elsif hash.key?(k) && block_given? yield(k, hash[k], v) else diff --git a/lib/hashie/mash.rb b/lib/hashie/mash.rb index 658aded..97f75d5 100644 --- a/lib/hashie/mash.rb +++ b/lib/hashie/mash.rb @@ -74,8 +74,9 @@ module Hashie return @_mashes[path] if @_mashes.key?(path) raise ArgumentError, "The following file doesn't exist: #{path}" unless File.file?(path) - parser = options.fetch(:parser) { Hashie::Extensions::Parsers::YamlErbParser } - @_mashes[path] = new(parser.perform(path, options.except(:parser))).freeze + options = options.dup + parser = options.delete(:parser) { Hashie::Extensions::Parsers::YamlErbParser } + @_mashes[path] = new(parser.perform(path, options)).freeze end def to_module(mash_method_name = :settings) |
