Запись в стандартный поток ошибок

Ruby:
Запись в стандартный поток ошибок

Как это сделать:

В Ruby вы можете писать в стандартный поток ошибок, используя $stderr.puts или его сокращённую форму STDERR.puts. Вот простой пример:

puts "Это пойдёт в стандартный вывод."
$stderr.puts "Это пойдёт в стандартный поток ошибок."

# Сокращённая версия:
STDERR.puts "Это тоже пойдёт в стандартный поток ошибок."

Откройте терминал, запустите скрипт и заметьте, что по умолчанию всё всё равно отображается вместе. Чтобы разделить потоки, требуется перенаправление. Вот как это можно сделать:

ruby your_script.rb >output.txt 2>error.txt

Эта команда перенаправляет стандартный вывод в output.txt и стандартный поток ошибок в error.txt.

Подробнее

Концепция stderr возвращает нас к самым ранним дням Unix. Она предназначена для сообщений об ошибках, чтобы они оставались видимыми, даже когда stdout перенаправлен. Хотя $stderr.puts и STDERR.puts являются распространёнными в Ruby, существуют и другие способы записи в stderr, такие как использование warn для вывода предупреждений или более низкоуровневых API вроде $stderr.write. С точки зрения реализации, stderr по умолчанию не буферизуется, что обеспечивает немедленный вывод, в то время как stdout обычно буферизуется.

Смотрите также