From: rubikitch Date: 2006-04-21T14:11:06+09:00 Subject: [ruby-list:42073] Re: puts,printの出力をファイルにも出力するには From: 岩崎 弘孝 Subject: [ruby-list:42063] puts,printの出力をファイルにも出力するには Date: Fri, 21 Apr 2006 10:53:20 +0900 > 既存のスクリプトでputs,printを多用しています。 > それらの出力をファイル*にも*書き出したいと思っています。 とてもつまらない方法ですが、ファイルに書き出した後で標準出力に書き出すというのは? この方法でprint,puts,systemなどの出力がファイルに書き出されます。 class << IO # Redirect stdout to STDOUT and executes the block. def redirect(stdout) begin stdout_sv = STDOUT.dup STDOUT.reopen(stdout) yield ensure STDOUT.flush STDOUT.reopen(stdout_sv) end end def tee(filename, &block) File.open(filename, "w+") do |fio| redirect(fio, &block) fio.rewind print fio.read end end end require 'tmpdir' IO.tee("#{Dir.tmpdir}/output") { # 書き出すファイル puts "puts to file1" system "echo system to file1" } puts "puts to stdout" -- rubikitch http://www.rubyist.net/~rubikitch/