In 1.9 a lot of methods return an enumerator if no block is provided. You can call another method on the enumerator.
arr = [1, 2, 3, 4, 5, 6, 7, 8]
arr.each_with_index.each_slice(2){|(a,i), (b,j)| puts "#{i} - #{a}, #{b}"}
(Variation on @sepp2k). Result:
0 - 1, 2
2 - 3, 4
4 - 5, 6
6 - 7, 8