Iteradores
Es un método constructor de lazo (looping). Es usado como el método de un objeto y opcionalmente se puede usar con la iteración de un proceso, encerrado entre barras verticales o un bloque (do..end ó { ... }).
times, upto, downto, step, each, collect, map, select, combination, etc., son iteradores (no son todos los que hay mira aquí http://ruby-doc.org/core-2.2.0/Array.html) y con su uso se simplifica mucho los complejos procesos de lógica que se requieren.
Algunos de éstos métodos pueden ser más complejos para llegar a otros alcances, así, por ejemplo, el método .each también ha sido expandido hacia los bytes, o los codepoint y line, cada uno precedido por un guión bajo, así: .each_bytes, .each_codepoint y .each_line. Cada cual son métodos definidos de la clase de objeto a la que nos referimos, en este caso, string.
Ejemplo:
@nombre = ["Pedro", "Eva"]
@nombres.each do |nombre|
puts "Hola #{nombre}"
end
Descárgate el fichero adjunto y sigue los ejemplos.