Contar ocorrências de únicos em rubi

para qualquer array determinado, onde você deseja contar as ocorrências de cada objeto único no array,

arr.inject(Hash.new(0)) {|h,x| h[x]+=1;h}

então, se você tiver
arr = [a, b, b, c, c, a, a, d]

isso retornará
=> [a => 3, b => 2, c => 2, d => 1]