On Aug 12, 2007, at 14:20, Thomas Hafner wrote:

> "Gregory Brown" <gregory.t.brown / gmail.com> wrote/schrieb  
> <b37300880708111035o2af744e1g2411e061054095ee / mail.gmail.com>:
>
>> What problem do you need this for... it sounds like you could get by
>> with a different (and better) approach, but we'd need to know a  
>> little
>> more about what you're trying to do.
>
> Agreed that that there might be a better solution for the original
> problem, but sometimes an intermediate problem becomes interesting per
> se. Anyway, the original question is how to find a single, more
> abstract function replacing these ones:
>
> def with_output_to_string
>   $stdout, tmp = StringIO.new, $stdout
>   yield
>   $stdout, tmp = tmp, $stdout
>   tmp.rewind
>   tmp.read
> end
>
> def with_error_to_string
>   $stderr, tmp = StringIO.new, $stderr
>   yield
>   $stderr, tmp = tmp, $stderr
>   tmp.rewind
>   tmp.read
> end
>
> The only difference is $stdout vs. $stderr, so the idea was to pass
> :$stdout resp. :$stderr as parameter.

Write one method that does both and returns both.  Use only the one  
you need.  See #util_capture in lib/test/zentest_assertions.rb in  
ZenTest.

--
Poor workers blame their tools. Good workers build better tools. The
best workers get their tools to do the work for them. -- Syndicate Wars