Ваш код делает что-то довольно необычное: передавая строку в метод gets
, вы фактически меняете входной разделитель :
gets(sep, limit [, getline_args]) → string or nil
Считываетследующая «строка» из потока ввода-вывода;строки разделяются на sep.
Причина, по которой ваш код работает не так, как вы ожидаете, заключается в том, что во входном буфере остается завершающий символ "\n"
, поэтому во второй раз вызывается gets
возвращает эту строку.
Пожалуй, самый простой способ решить эту проблему - просто принять этот символ при первом вызове gets
:
request_info = gets("Edit Confirmation\n").chomp.gsub!(/\s+/m, ' ').strip.split(" ")
Для «сложного» многострочного вводатаким образом, было бы более распространенным передавать параметр имени файла в скрипт ruby и читать этот файл, а не вставлять его в терминал.
Или вы можете использовать gets(nil)
для чтения до EOF
и попросите пользователя нажать CTRL+D
, чтобы обозначить конец многострочного ввода.