2008-01-16
[Ruby]$stdout
putsやprintの出力先を状況に応じて変更したい。 $stdoutを変更すれば、出力先を切り替えることができるらしい。
$stdout = STDOUT puts "hello" # 標準出力へ $stdout = File.open("log.txt", "w") puts "hello" # ファイルlog.txtへ
とまあ簡単に切り替えられるわけだけど、いちいちグローバル変数を設定するのが嫌な気がするので、次のようなメソッドを定義したのだけど、もっといいが方法あるのだろうか。
def stdout(out) tmp = $stdout $stdout = out yield $stdout = tmp end