Ruby equivalent to "exec > $logfile 2>&1" in sh script?

People,

I quite frequently have something like:

exec > $logfile 2>&1

at the top of my shell scripts to output everything that follows
(including
errors) into a log file - is there some way of doing the equivalent in a
Ruby
script?

Thanks,

Phil.

Philip R.

Pricom Pty Limited (ACN 003 252 275 ABN 91 003 252 275)
GPO Box 3411
Sydney NSW 2001
Australia
Mobile: +61:(0)411-185-652
Fax: +61:(0)2-8221-9599
E-mail: [email protected]

Phil R. wrote:

People,

I quite frequently have something like:

exec > $logfile 2>&1

at the top of my shell scripts to output everything that follows
(including
errors) into a log file - is there some way of doing the equivalent in a
Ruby
script?

Thanks,

Phil.

This seems to work:

outfile = File.open(“output.txt”, “w”)
$stdout.reopen outfile
$stderr.reopen outfile

puts “hello world!”
system(“dir no_exist”)

=== output.txt ===

hello world!
Volume in drive C has no label.
Volume Serial Number is 7874-56C8

Directory of C:
File Not Found

On Nov 30, 2006, at 19:24 , El Gato wrote:

outfile = File.open(“output.txt”, “w”)
$stdout.reopen outfile
$stderr.reopen outfile

puts “hello world!”
system(“dir no_exist”)

Not really.

$ ruby
outfile = File.open(“output.txt”, “w”)
$stdout.reopen outfile
$stderr.reopen outfile

0.upto 10 do |v| (v%2==0 ? STDOUT : STDERR).puts v; end
$ cat output.txt
1
3
5
7
9
0
2
4
6
8
10


Eric H. - [email protected] - http://blog.segment7.net

I LIT YOUR GEM ON FIRE!

Hi all,

Adding $stdout.sync = true; $stderr.sync = true should solve the problem
of stdout and stderr being output of of sync.

See in-line edit below.

On Fri, 2006-01-12 at 16:10 +0900, Eric H. wrote:

$ ruby
outfile = File.open(“output.txt”, “w”)
$stdout.reopen outfile
$stderr.reopen outfile

$stdout.sync = true
$stderr.sync = true