IRB 1.8.7 でハッシュを印刷すると奇妙な動作が見られます。ハッシュを で初期化Hash.new
すると、ハッシュが空のハッシュに「評価」されているように見えます。
irb(main):024:0> h = Hash.new([])
=> {}
irb(main):025:0> h["test"]
=> []
irb(main):026:0> h["test"] << "blah"
=> ["blah"]
irb(main):027:0> h
=> {}
irb(main):028:0> puts h.inspect
{}
=> nil
irb(main):031:0> require 'pp'
=> true
irb(main):032:0> pp h
{}
=> nil
irb(main):033:0> h["test"]
=> ["blah"]
ご覧のとおり、データは実際にはハッシュに存在しますが、印刷または表示しようとすると失敗するようです。ハッシュ リテラルで初期化すると、この問題が解決するようです。
irb(main):050:0> hash = { 'test' => ['testval'] }
=> {"test"=>["testval"]}
irb(main):051:0> hash
=> {"test"=>["testval"]}
irb(main):053:0> hash['othertest'] = ['secondval']
=> ["secondval"]
irb(main):054:0> hash
=> {"othertest"=>["secondval"], "test"=>["testval"]}