## helper define that takes a block
def capturedstdout
saved = $stdout
captured = StringIO.new
$stdout = captured
begin
yield
ensure
$stdout = saved
end
captured.string
end
## usage
out = capturedstdout {
# do your stuff that causes stdout output
}
# now you have STDOUT of the block in 'out' and STDOUT is back to normal