Ответ 1
Если вы имеете дело с файлами, вы, вероятно, захотите IO # fsync, в котором говорится:
Немедленно записывает все буферизованные данные в ios на диск. Обратите внимание, что fsync отличается от использования IO # sync =. Последнее гарантирует, что данные будут удалены из буферов Rubys, но не гарантирует, что базовая операционная система фактически записывает их на диск.
Если вы имеете дело со стандартным вводом и выводом, вы также можете попробовать io/console, чтобы увидеть, использует ли IO:: console # ioflush дает вам поведение, в котором вы нуждаетесь. В документации указано:
Сбрасывает входные и выходные буферы в ядре. Для использования этого метода необходимо использовать "io/console".
В качестве примера рассмотрим:
require 'io/console'
ARGF.each do |line|
$stdout.puts line
$stdout.ioflush
end