eshell で標準出力に出力されるタイミングが遅い問題について - gan2 の Ruby 勉強日記 puts 以外のメソッドについてはいちいちいくつも再定義するのはめんどいなーとか思ってたんだけど putsやprintなどの標準出力への出力メソッドはIO#writeを呼んでいる。その証拠に$stdoutの特異メソッドwriteを定義してみる。特異メソッドでsuperしたら通常のIO#write呼び出しになる。その状態で出力メソッドを呼ぶと、どれもwriteを呼び出していることがわかる。 def $stdout.write(str) super "WRITE:" super end $stdout.write "write\n" $stdout << "<<\n" print "print\n" puts "hoge" printf "printf: %d\n", 1 # >> WRIT