irb(main):001:0> d = [1,2,3,4] => [1, 2, 3, 4] irb(main):002:0> h = Hash.new => {} irb(main):003:0> h[d] = "hello" => "hello" irb(main):004:0> h => {[1, 2, 3, 4]=>"hello"} irb(main):005:0> h[d] => "hello" irb(main):006:0> d.push(5) => [1, 2, 3, 4, 5] irb(main):007:0> h[d] => nil irb(main):008:0> h => {[1, 2, 3, 4, 5]=>"hello"} irb(main):009:0> d => [1, 2, 3, 4, 5] irb(main):010:0> h[d] => nil irb(main):011:0> h.rehash => {[1, 2, 3, 4, 5]=>"hello"} irb(main):012:0> h[d] => "hello" irb(main):013:0> Is this expected or a bug? -abhisek