summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorBobby McDonald <BobbyMcWho@users.noreply.github.com>2020-01-14 08:50:43 -0500
committerDaniel Doubrovkine (dB.) @dblockdotorg <dblock@dblock.org>2020-01-14 08:50:43 -0500
commit25fe2f747ee06e563808e08493ec7a471cc82b26 (patch)
tree131c87eb22d54097a58d6011e1a8c5669d7c0f51 /lib
parentd2071d82a2ceb2513bc0ff9c827ab3bc2a80b072 (diff)
downloadhashie-25fe2f747ee06e563808e08493ec7a471cc82b26.tar.gz
Fix except use in Mash#load (#508)
Diffstat (limited to 'lib')
-rw-r--r--lib/hashie/extensions/deep_merge.rb2
-rw-r--r--lib/hashie/mash.rb5
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)