Enumerable#each_slice (Ruby 3.0.0 リファレンスマニュアル)

array = (0..10).to_a
#=> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

array.each_slice(3).to_a
#=> [[0, 1, 2], [3, 4, 5], [6, 7, 8], [9, 10]]

ある配列を任意の要素数の配列に分割したい - Qiita

Array#in_groups_of

array = (0..10).to_a
#=> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

# 第 1 引数のみの場合、余りが nil で埋められる。
array.in_groups_of(3)
#=> [[0, 1, 2], [3, 4, 5], [6, 7, 8], [9, 10, nil]]