Ruby имеет два оператора для генерации диапазона значений. .. - включающий и ... - исключающий.
..
for i in 0..3
    puts i
end
Сгенерирует
0
1
2
3
включая начало и конец, так же как это работает в Perl.
...
Если мы будем использовать 3 точки вместо двух, тогда диапазон будет включать нижнюю границу, и не будет включать верхнюю.
Так же, как диапазоны range работают в Python.
for i in 0...3
    puts i
end
0
1
2
Обратный диапазон
Если граница слева больше, чем граница справа, тогда оператор диапазона не вернет значений.
examples/ruby/range_two_wrong.rb
for i in 7 .. 4
    puts i
end
Значения не возвращаются.
Как вариант, мы можем сгенерировать возрастающий список чисел, а затем вызвать для него метод reverse.
Для этого нам нужно сначала сконвертировать диапазон в массив:
examples/ruby/range_two_reverse.rb
for i in (4..7).to_a.reverse
    puts i
end
напечатает:
7
6
5
4
Буквенные диапазоны
В дополнение к созданию диапазонов чисел, Ruby может также создавать буквенные диапазоны:
examples/ruby/range_letters.rb
for i in 'a'..'d'
   puts i
end
a
b
c
d
Диапазоны символов
Но и не только это. Мы можем использовать два любых символа из видимой части таблицы ASCI:
for i in 'Z'..'a'
   puts i
end
Z
[
\
]
^
_
`
a
Диапазоны с переменными
В качестве нижней и верхней границ мы можем использовать переменные:
x = 3
y = 6 
for i in x .. y
   puts i
end
