[lnkForumImage]
TotalShareware - Download Free Software

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


 

Forums >

comp.lang.ruby

print messages show up after script has quit

nstasiv

4/25/2007 12:14:00 PM

Hello,

I use ruby 1.8.6 on windows xp sp2. My script updates podcast
subsrciptions at night.This saves internet traffic during the day. It
starts iTunes application, sleeps while itunes updates feeds and then
quits.

Here's listing

require 'win32ole'


#starts itunes application and updates podcasts
ready = Time.local(2007, "Apr", 25, 15, 05, 1)
done = false
while !done do

now = Time.now

if now > ready then
itunes = WIN32OLE.new('iTunes.Application')
if itunes then
print "Update started\n"
itunes.UpdatePodcastFeeds
sleep 30 # waits 30 secs

itunes.Quit
print "shutdown...\n"
done=true
end
else
print "Not so fast boy..." + now.to_s() + "\n"
sleep(30) # waits for 30 secs
end
end



While testing I noted that any debug output I print shows up in a
window after the applicaiton has quit. I don't know why it is
happening, because obviously I want script to print messages to see
its activity. Any help appreciated.

Thanks

2 Answers

elof

4/25/2007 12:38:00 PM

0

> Hello,
>
> I use ruby 1.8.6 on windows xp sp2. My script updates podcast
> subsrciptions at night.This saves internet traffic during the day. It
> starts iTunes application, sleeps while itunes updates feeds and then
> quits.

This is happening because stdout is buffered.

Text written to stdout will appear once the buffer is full, when the
program ends or if you ask for the buffer to be flushed by calling
$stdout.flush like this:

> else
> print "Not so fast boy..." + now.to_s() + "\n"
$stdout.flush # flush stdout
> sleep(30) # waits for 30 secs
> end

Kristian


Björn Paetzel

4/25/2007 3:37:00 PM

0

elof@elof.dk schrieb:

> This is happening because stdout is buffered.
>
> Text written to stdout will appear once the buffer is full, when the
> program ends or if you ask for the buffer to be flushed by calling
> $stdout.flush like this:

Correct me if I'm wrong, but I thought flushing would be implicit
whenever a newline ('\n') is printed.