instance method
capture
Ruby on Rails 4.1.16
Since v3.1.12 Last seen in v4.2.9Signature
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
-
streamreq
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