Из вашего стиля кодирования кажется, что вы довольно новичок в Ruby. Более Ruby-подобный подход был бы:
start_date = '01-01-2019'.to_date
repeat = 3
dates = 1.upto(repeat).map { |count| start_date + count.months }
# or
dates = (1..repeat).map { |count| start_date + count.months }
Затем для печати массива дат используйте:
puts dates
Насколько я могу судить, ваш код должен работать. Помните, что puts
печатает массивы в несколько строк. Если вы хотите отобразить содержимое массива в одной строке, используйте p
. Разница в том, что puts
использует метод to_s
, а p
использует метод inspect
. Массивы, переданные в puts
, будут сглажены и вместо этого будут рассматриваться как несколько аргументов. Каждый аргумент получит свою собственную строку.
puts [1, 2]
# 1
# 2
#=> nil
p [1, 2]
# [1, 2]
#=> [1, 2]