in_groups_ofは配列を指定個数ごとに切り分けてくれるメソッドです
(1..10).to_a.in_groups_of(3) #=> [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, nil, nil]]
空白を任意の値で埋める事もできます
(1..10).to_a.in_groups_of(3,42) #=> [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 42, 42]]
と、まぁこれでは何が美味しいのが分かりませんが
例えば、
(1..10).to_a.in_groups_of(3,42) do |a, b, c| puts "hoge:#{a}" puts "piyo:#{b}" puts "fuga:#{c}" end
なんてやると
hoge:1 piyo:2 fuga:3 hoge:4 piyo:5 fuga:6 hoge:7 piyo:8 fuga:9 hoge:10 piyo:42 fuga:42
と、素直にロジック書くと微妙に入り組みそうなものも楽に書く事ができます。