instance method capture

Ruby on Rails 4.1.16

Since v3.1.12 Last seen in v4.2.9

Available in: v3.1.12 v3.2.22.5 v4.0.13 v4.1.16 v4.2.9

Signature

capture(stream)

Captures the given stream and returns it:

stream = capture(:stdout) { puts 'notice' }
stream # => "notice\n"

stream = capture(:stderr) { warn 'error' }
stream # => "error\n"

even for subprocesses:

stream = capture(:stdout) { system('echo notice') }
stream # => "notice\n"

stream = capture(:stderr) { system('echo error 1>&2') }
stream # => "error\n"

Parameters

stream req
Source
# File activesupport/lib/active_support/core_ext/kernel/reporting.rb, line 82
  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
    return captured_stream.read
  ensure
    captured_stream.close
    captured_stream.unlink
    stream_io.reopen(origin_stream)
  end

Defined in activesupport/lib/active_support/core_ext/kernel/reporting.rb line 82 · View on GitHub · Improve this page · Find usages on GitHub

Defined in Kernel

Type at least 2 characters to search.

↑↓ navigate · open · esc close