programs/system_redirects.rb

tests/_examples/programs/system_redirects.rb in the metorex repository.

require "tmpdir"

Dir.mktmpdir do |directory|
  log = File.join(directory, "make.out")
  File.open(log, "w") do |output|
    system("echo", "compiling rates", out: output, err: output)
    system("echo linking rates >&2", out: output, err: output)
    Dir.chdir(directory) { system("echo", "installed", out: output) }
  end
  puts(File.read(log))
end

reader, writer = IO.pipe
p(system("echo", "piped", out: writer))
writer.close
p(reader.read)
p(system("false", out: File::NULL))
p($?.exitstatus)
p(system("pwd", chdir: "/", out: File::NULL))
begin
  system("false", exception: true, out: File::NULL)
rescue RuntimeError => error
  p(error.class)
end

Output:

compiling rates
linking rates
installed
true
"piped\n"
false
1
true
RuntimeError