module ActiveSupport::Testing::Stream

def capture(stream)

def capture(stream)
  stream = stream.to_s
  captured_stream = Tempfile.new(stream)
  stream_io = eval("$#{stream}")
  origin_stream = stream_io.dup
  stream_io.reopen(captured_stream)
  yield
  stream_io.rewind
  captured_stream.read
ensure
  captured_stream.close
  captured_stream.unlink
  stream_io.reopen(origin_stream)
end

def quietly(&block)

def quietly(&block)
  silence_stream(STDOUT) do
    silence_stream(STDERR, &block)
  end
end

def silence_stream(stream)

def silence_stream(stream)
  old_stream = stream.dup
  stream.reopen(IO::NULL)
  stream.sync = true
  yield
ensure
  stream.reopen(old_stream)
  old_stream.close
end