Как разбить массив в Ruby

В Ruby 1.8.6 у меня есть массив, скажем, 100 000 идентификаторов пользователей, каждый из которых является int. Я хочу выполнить блок кода для этих идентификаторов пользователей, но я хочу сделать это в кусках. Например, я хочу обрабатывать их по 100 за раз. Как я могу легко достичь этого как можно проще?

Я мог бы сделать что-то вроде следующего, но, вероятно, есть более простой способ:

a = Array.new
userids.each { |userid|
  a << userid
  if a.length == 100
    # Process chunk
    a = Array.new
  end
}
unless a.empty?
  # Process chunk
end

Ответ 1

require 'enumerator'
userids.each_slice(100) do |a|
  # do something with a
end

Ответ 2

Rails имеет in_groups_of, который под капотом использует each_slice.

userids.in_groups_of(100){|group|
  //process group
}