Actions
Bug #10023
closedHash#merge fails duplicating objects
    Bug #10023:
    Hash#merge fails duplicating objects
  
Description
Here is an example in IRB (ruby 2.1.2):
A={b:{}}
=> {:b=>{}}
c=A.merge({c: {d: 'e'}})
=> {:b=>{}, :c=>{:d=>"e"}}
c[:b][:d] = "f"
=> "f"
A
=> {:b=>{:d=>"f"}}
Every key, value pair is expected to be duplicated during the merge? Please, investigate if this is a bug
        
          
          Updated by coyote (Alexey Babich) over 11 years ago
          
          
        
        
      
      Please, also note that Rails' deep_merge does not help
        
          
          Updated by coyote (Alexey Babich) over 11 years ago
          
          
        
        
      
      The same with duplication
c=A.dup #same .clone
=> {:b=>{}}
c.merge!({c: {d: 'e'}})
=> {:b=>{}, :c=>{:d=>"e"}}
c[:b][:d] = 'bug'
=> "bug"
A
=> {:b=>{:d=>"bug"}}
        
          
          Updated by coyote (Alexey Babich) over 11 years ago
          
          
        
        
      
      Please, note that only Rails' deep_dup seems helpful to workaround the issue
        
          
          Updated by nobu (Nobuyoshi Nakada) over 11 years ago
          
          
        
        
      
      - Status changed from Open to Rejected
 
Not a bug.
A[:b] and c[:b] refer the same object.
Check its object_id.
Actions