Какая разница между методами Ruby put и write?

Какая разница между...

File.open('abc', 'w') { |f| f.puts 'abcde' }

... и...

File.open('abc', 'w') { |f| f.write 'abcde' }

...

Ответ 1

puts добавляет новую строку, писать не делает. Технически, puts добавляет разделитель записей (который обычно является символом новой строки) к выходу, если он не имеет одного в конце. записывает выходы только то, что дано.

Ответ 2

В таких случаях я всегда начинаю с документации Ruby Core, в этом случае класс IO.

ios.puts(obj, ...) => nil

Записывает данные объекты в ios, как с помощью IO#print. Записывает разделитель записей (как правило, новую строку) после тех, которые еще не заканчиваются последовательностью новой строки. Если вызывается с аргументом массива, записывает каждый элемент в новую строку. Если вызывается без аргументов, выводится один разделитель записи.

ios.write(string) => integer

Записывает данную строку в ios. Поток должен быть открыт для записи. Если аргумент не является строкой, он будет преобразован в строку с помощью to_s. Возвращает количество записанных байтов.