eshell で標準出力に出力されるタイミングが遅い問題について
Ruby の場合なら以下のように puts などを再定義しておくことで
とりあえずは解決されるように思える。
alias :_puts :puts def puts(*args) _puts *args $stdout.flush end
追記
バッファリングの問題のようだから、再定義しなくても「$stdout.sync = true」でよくないかな?しかも↑だとputs以外のprintや「<<」やwriteに対応していないし。
バッファリングの問題だな。 - http://rubikitch.com/に移転しました
おお。そんないい方法があったとは…。
puts 以外のメソッドについては
いちいちいくつも再定義するのはめんどいなーとか思ってたんだけど
これでもう解決しそうだなぁ。
$stdout.sync = true
「バッファリング」って言葉も知らなかったから覚えておこうっと。
id:rubikitch++
追記の追記
putsやprintなどの標準出力への出力メソッドはIO#writeを呼んでいる。
puts等の出力メソッドはIO#writeを呼んでいる - http://rubikitch.com/に移転しました
そうだったのか!
id:rubikitch++++ > id:rubikitch# (あ、いいなこの書き方。)
特異メソッド中の super の振る舞いも分かってなかった。勉強になります!