Forum: Ruby print messages show up after script has quit

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
29e72f47a4acc9eea2288ec95837f1b6?d=identicon&s=25 stan (Guest)
on 2007-04-25 14:15
(Received via mailing list)
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
Be9f5eca2661acace327b45f8b1acabf?d=identicon&s=25 unknown (Guest)
on 2007-04-25 14:38
(Received via mailing list)
> 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
This topic is locked and can not be replied to.