class Hash
def deep_merge(other, &block)
Recursively merges self with other hash and returns new hash.
def deep_merge(other, &block) dup.deep_merge!(other, &block) end unless method_defined? :deep_merge
def deep_merge(other, &block) dup.deep_merge!(other, &block) end unless method_defined? :deep_merge