class Ammeter::OutputCapturer

Public Class Methods

capture(io, &block) click to toggle source

Is this thread safe!?!? This won't work with sub-processes

# File lib/ammeter/output_capturer.rb, line 5
def self.capture(io, &block)
  case io
  when :stdout
    capture_stdout(&block)
  when :stderr
    capture_stderr(&block)
  else
    raise "Unknown IO #{io}"
  end
end
capture_stderr(&block) click to toggle source
# File lib/ammeter/output_capturer.rb, line 28
def self.capture_stderr(&block)
  captured_stream = StringIO.new

  orginal_io, $stderr = $stderr, captured_stream

  block.call

  captured_stream.string
ensure
  $stderr = orginal_io
end
capture_stdout(&block) click to toggle source
# File lib/ammeter/output_capturer.rb, line 16
def self.capture_stdout(&block)
  captured_stream = StringIO.new

  orginal_io, $stdout = $stdout, captured_stream

  block.call

  captured_stream.string
ensure
  $stdout = orginal_io
end