class Hash
def deep_dup
hash[:a][:c] # => nil
dup[:a][:c] = 'c'
dup = hash.deep_dup
hash = { a: { b: 'b' } }
Returns a deep copy of hash.
def deep_dup hash = dup each_pair do |key, value| if key.frozen? && ::String === key hash[key] = value.deep_dup else hash.delete(key) hash[key.deep_dup] = value.deep_dup end end hash end