From: Eric Hodel Date: 2006-10-16T06:13:26+09:00 Subject: Re: redirect STDOUT On Oct 15, 2006, at 3:30 AM, yong wrote: > Eric Hodel writes: >> On Oct 14, 2006, at 8:50 PM, yong wrote: >>> Now I can use STDOUT.reopen to redirect STDOUT output to a file.But >>> How can I redirect it to a string? >> >> You don't. >> >> You should avoid touching STDOUT and STDERR as much as possible. >> >> Instead assign a StringIO to $stdout. >> >> http://blog.segment7.net/articles/2006/08/17/stdout-vs-stdout > > require 'stringio' > > mystring="" > sstring=StringIO.open(mystring,"w+") sstring = StringIO.new will suffice. > #STDOUT.reopen(sstring) #can't work > stdoutbackup=$stdout > $stdout=sstring > > print "BUFFERED TEXT\r\n" > > $stdout=stdoutbackup I tend to wrap this up in a method that yields. See util_capture in ZenTest's test/zentest_assertions.rb -- Eric Hodel - drbrain@segment7.net - http://blog.segment7.net This implementation is HODEL-HASH-9600 compliant http://trackmap.robotcoop.com