Skip to content

Copies stdout (or any other IO stream) contents to a file or another stream. Works with subprocesses too.

License

Notifications You must be signed in to change notification settings

DanielVartanov/ruby-io-tee

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

IO::Tee

Copies stdout (or any other IO stream) contents to a file or another stream. Works with subprocesses too.

Example 1

# io-tee-demo.rb
require 'io/tee'

$stdout.tee('output.log')

puts "Hello, world!"

$stdout is effectively copied into file output.log while still being streamed as a standard output.

$ ruby io-tee-demo.rb
Hello, world!

$ cat output.log
Hello, world!

Example 2

Obviously it works with more than one stream copied into the same file

# io-tee-demo.rb
require 'io/tee'

$stdout.tee('full-output.log')
$stderr.tee('full-output.log')

puts 'Hello, world'
$stderr.puts '[DEBUG] Debug info'

One can suppress stderr during execution but still get it logged into a file alongside stdout

$ ruby io-tee-demo.rb 2> /dev/null
Hello, world

$ cat full-output.log
Hello, world
[DEBUG] Debug info

Append or overwrite

A keyword argument of append: false can be passed to the IO#tee method in order to overwrite the given file upon start of writing.

Sponsored by Veeqo

About

Copies stdout (or any other IO stream) contents to a file or another stream. Works with subprocesses too.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published