in itchef/cookbooks/fb_helpers/libraries/fb_helpers.rb [304:341]
def self.merge_hash!(merge_onto, merge_with, overwrite_leaves = false)
if merge_onto.is_a?(Hash) && merge_with.is_a?(Hash)
merge_with.each do |key, merge_with_value|
is_leaf = false
if overwrite_leaves && merge_with_value.is_a?(Hash)
merge_with_value.each do |_k, v|
if v.is_a?(Hash)
is_leaf = true
break
end
end
end
if merge_onto.key?(key)
if is_leaf
value = merge_onto[key]
merge_with_value.each do |k, _v|
value[k] = merge_with_value[k]
end
else
value = self.merge_hash(merge_onto[key], merge_with_value,
overwrite_leaves)
end
else
value = merge_with_value
end
merge_onto[key] = value
end
merge_onto
else
merge_with
end
end