Ruby chunk an enumerable into batches
Ruby
def each_chunk(items, size)
return enum_for(:each_chunk, items, size) unless block_given?
raise ArgumentError, 'size must be positive' unless size.is_a?(Integer) && size.positive?
batch = []
items.each do |item|
batch << item
next unless batch.size == size
yield batch
batch = []
end
yield batch unless batch.empty?
end