いまさらだけどtrap::Hashの回避策ってブロック使うのがいいと思うんだけど

h = Hash.new([])
h[0] << 0
h[1] << 1
p h #=> {}
p h.default #=> [0, 1]

h = Hash.new{|h,k| h[k]=[]}
h[0] << 0
h[1] << 1
p h #=> {0=>[0], 1=>[1]}
p h.default #=> nil