1 2 3 4 5 6 7 8 9 10 11 12
class Array def to_hash Hash[*flatten] end def group_by inject({}) do |groups, element| (groups[yield(element)] ||= []) << element groups end end end