class ActiveSupport::HashWithIndifferentAccess
def merge(hash, &block)
modify the receiver but rather returns a new hash with indifferent
This method has the same semantics of +update+, except it does not
def merge(hash, &block) self.dup.update(hash, &block) end