[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

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

Phil Rhoades

12/1/2006 3:00:00 AM

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 Rhoades

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: phil@pricom.com.au

3 Answers

wmwilson01

12/1/2006 3:25:00 AM

0

Phil Rhoades 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

--
Posted via http://www.ruby-....

Eric Hodel

12/1/2006 7:11:00 AM

0

On Nov 30, 2006, at 19:24 , El Gato wrote:
> Phil Rhoades wrote:
>> 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?
>
> This seems to work:
>
> 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 Hodel - drbrain@segment7.net - http://blog.se...

I LIT YOUR GEM ON FIRE!


Rick Tessner

12/1/2006 3:38:00 PM

0

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 Hodel wrote:

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

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

> 0.upto 10 do |v| (v%2==0 ? STDOUT : STDERR).puts v; end


--
Rick
rick.tessner@gmail.com