I would do

$stderr.reopen $stdout

instead of

$stderr = $stdout

Gennady.


----- Original Message ----- 
From: "Andrew Walrond" <andrew / walrond.org>
To: "ruby-talk ML" <ruby-talk / ruby-lang.org>
Sent: Tuesday, August 26, 2003 11:19 AM
Subject: Help! redirecting stderr 1.6.x and 1.8 differences


> I want to log stdout and stderr of a compile to a file, so I use (for
> example) this simple ruby script, which works under 1.6.8 and doesn't
under
> 1.8
>
> ---------------------------------
> #!/bin/ruby -w
>
> $stdout.reopen("my.log","w")
> $stdout.sync=true
> $stderr=$stdout
>
> $stdout.puts("This from stdout")
> $stderr.puts("This from stderr")
>
> system("gcc foobar")
> ---------------------------------
>
> Running with 1.6.8....
>
> rubyx@atlas public $ ruby --version
> ruby 1.6.8 (2002-12-24) [i686-linux-gnu]
> rubyx@atlas public $ ./testout.rb
> rubyx@atlas public $ cat my.log
> This from stdout
> This from stderr
> gcc: foobar: No such file or directory
> gcc: no input files
> rubyx@atlas public $
>
> And with 1.8.0...
>
> rubyx@atlas public $ ruby --version
> ruby 1.8.0 (2003-08-04) [i686-linux]
> rubyx@atlas public $ ./testout.rb
> gcc: foobar: No such file or directory
> gcc: no input files
> rubyx@atlas public $ cat my.log
> This from stdout
> This from stderr
> rubyx@atlas public $
>
>
> So what is the correct way to do this which will work under 1.8 but also
> supports 1.6.8?
>
> TIA
> Andrew Walrond
>
>
>