On Nov 28, 2007 4:20 PM, Oliver <fwang2 / gmail.com> wrote:
> Thanks to both of you for the solution.
>
> The double while loop seems a bit more concise, but it depends on
> File#gets method handles the changing file content correctly. I will
> give it a spin.
>
> Best,
>
> Oliver
>
> On Nov 28, 3:33 pm, Christian von Kleist <cvonkle... / gmail.com> wrote:
> > You can do something like this:
> >
> > f = File.new('logfile.log')
> >
> > while true
> >   while(line = f.gets)
> >     puts line
> >   end
> >   sleep 5
> > end
> >
>
> > On Nov 28, 2007 3:21 PM, Gary Wright <gwtm... / mac.com> wrote:
> >
> >
> >
> > > On Nov 28, 2007, at 3:05 PM, Oliver wrote:
> > > > One process periodically will append its output to a file (which is
> > > > not under my control), I want to write a ruby problem to detect and
> > > > report only the *new* stuff that went into the output file ... Besides
> > > > the brute force way such as opening the file and counting the lines
> > > > etc, is there a better solution to it?
> >
> > > You can use File.stat('filename').size to get the number of bytes in
> > > the file or .mtime to find the last modification time.  If the bytes
> > > and/or time changes you can then open the file and grab the new lines.
> >
> > > Gary Wright
>
>
>

You're welcome!  That approach has worked for me many times in the
past in many languages, including Ruby.  Give it a run!