Вы звоните gets
дважды в цикле.В первый раз он помещается в массив.Второй раз он сравнивается с пустой строкой для разрыва цикла.Но каждый раз он запрашивает новую строку.
Вы хотите вызывать gets
только один раз за цикл.Таким образом, вы можете сохранить его в переменной, а затем использовать эту переменную несколько раз позже в коде.
cool_words = []
while true
line = gets
cool_words.push line
break if line.chomp == ''
end
puts cool_words
ОБНОВЛЕНИЕ: @MicahelKohl в комментариях указывает, что вы можете выполнить вышеуказанную задачу более элегантно, как это:
cool_words = []
until (line = gets).to_s.chomp.empty?
cool_words << line
end
puts cool_words