読者です 読者をやめる 読者になる 読者になる

Rubyに標準出力をバッファリングさせないようにする

Rubyでバッチ処理のようなものを書いていたときに、一件出力するごとに結果を標準出力に吐くようにプログラムを書いた時の話です。
処理が進んでいるにもかかわらず、結果が出力されず、しばらく経ってから一気に出力されました。

調べてみると、Rubyは標準出力をバッファリングするようです。
バッファリングさせないようにするには、スクリプトの先頭に、

$stdout.sync = true

というコードを書いておけば、標準出力はバッファリングされず、直接出力されます。

ちなみに

ファイル出力の場合は、

file = new File('hoge.txt', 'w')
file.sync = true

とすればよいようです。