silence_stream improvement ?

It seemed useful to be able to silence more than one stream at a time.

  # Silences any stream for the duration of the block.

Of course, it would help if I put 'yield' in the right place. Try
again:

  def silence_stream(*streams)
    streams = [STDOUT, STDERR] if streams.empty?
    on_hold = streams.collect{ |stream| stream.dup }
    streams.each do |stream|
      stream.reopen(RUBY_PLATFORM =~ /mswin/ ? 'NUL:' : '/dev/null')
      stream.sync = true
    end
    yield
  ensure
    streams.each_with_index do |stream, i|
      stream.reopen(on_hold[i])
    end
  end

T.