Я пытаюсь написать ruby script для фильтрации вывода хвостатого файла (tail -f log.log | ./my_filter.rb
). Я полагаю, что я установил stdin и stdout для синхронного чтения, но я все еще вижу, что мой вывод выходит в отложенных партиях, примерно 20 строк за раз, а не в реальном времени.
Я могу воспроизвести проблему с кодом так же просто, как:
#!/usr/bin/ruby
$stdout.sync = true
$stdin.sync = true
ARGF.each do |line|
puts line
end
Мне не хватает настройки для устранения буферизации или что-то в этом роде?
Изменить. Чтобы уточнить, если я просто tail -f
журнал, я вижу много строк, написанных за секунду.