class Hash
def deep_merge!(other, &block)
Similar as deep_merge but modifies self
def deep_merge!(other, &block) other.each_pair do |key, val| tval = self[key] if tval.is_a?(Hash) && val.is_a?(Hash) self[key] = tval.deep_merge(val) else self[key] = block && tval ? block.call(k, tval, val) : val end end self end unless method_defined? :deep_merge!