Ответ 1
puts добавляет новую строку, писать не делает. Технически, puts добавляет разделитель записей (который обычно является символом новой строки) к выходу, если он не имеет одного в конце. записывает выходы только то, что дано.
Какая разница между...
File.open('abc', 'w') { |f| f.puts 'abcde' }
... и...
File.open('abc', 'w') { |f| f.write 'abcde' }
...
puts добавляет новую строку, писать не делает. Технически, puts добавляет разделитель записей (который обычно является символом новой строки) к выходу, если он не имеет одного в конце. записывает выходы только то, что дано.
В таких случаях я всегда начинаю с документации Ruby Core, в этом случае класс IO.
ios.puts(obj, ...) => nil
Записывает данные объекты в ios, как с помощью
IO#print
. Записывает разделитель записей (как правило, новую строку) после тех, которые еще не заканчиваются последовательностью новой строки. Если вызывается с аргументом массива, записывает каждый элемент в новую строку. Если вызывается без аргументов, выводится один разделитель записи.
ios.write(string) => integer
Записывает данную строку в ios. Поток должен быть открыт для записи. Если аргумент не является строкой, он будет преобразован в строку с помощью
to_s
. Возвращает количество записанных байтов.