In Ruby raramente scrivi un ciclo for. Il modulo Enumerable ti dà metodi espressivi che dicono cosa vuoi, non come ottenerlo.

numeri = [1, 2, 3, 4, 5, 6]

numeri.map { |n| n * 2 }               # => [2, 4, 6, 8, 10, 12]
numeri.select { |n| n.even? }          # => [2, 4, 6]
numeri.reduce(0) { |sum, n| sum + n }  # => 21
numeri.sum                             # => 21 (scorciatoia)

map trasforma, select filtra, reduce aggrega. Si concatenano: numeri.select(&:even?).map { |n| n ** 2 }.

Quel &:even? è la forma compatta di { |n| n.even? }. Una volta presa la mano, i cicli manuali ti sembreranno rumore inutile.