Enumerable#entries

にはまったというお話。

class Hash
  def method_missing(method, *args)
    ret = self[method] || self[method.to_s]
    return ret if ret
    super
  end
end

h = {root: {hoge: 1, foo: 2}, entries: [{hoge: 3, foo: 4}, {hoge: 5, foo: 6}]}
h.entries
#=> [[root: {hoge: 1, foo: 2}, entries: [{hoge: 3, foo: 4}, {hoge: 5, foo: 6}]]]

to_aだけでいいのでは、と思った。Rubyはよくaliasが提供されてるけど不要なんじゃないかと思う時もある。 や、今回のは不用意にmethod_missing使うなとか、ドキュメント嫁という話ではあるのだけれども...