Forum: Ruby on Rails Load file into text field?

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.
7c8f8b6eae4dd991e3a9065c68451361?d=identicon&s=25 Wai Tsang (sneptune)
on 2007-02-03 04:14
Does anyone know if it is possible to load text from file into a text
field, and using ajax to upload the field so that when the file has
changed, the field will be updated automatically?

Thanks.
C515daf003a781a638d8a01e41a935a0?d=identicon&s=25 George Ogata (Guest)
on 2007-02-03 10:43
(Received via mailing list)
On 2/3/07, Wai Tsang <rails-mailing-list@andreas-s.net> wrote:
>
> Does anyone know if it is possible to load text from file into a text
> field, and using ajax to upload the field so that when the file has
> changed, the field will be updated automatically?

The first bit is easy.  "@text = File.read(filename)" in the
controller, and use it somewhere in your view to show it.

The second bit can be done in a couple of ways.

The easier one is to have the client poll the server for changes, and
send the new text when it has.  Take a look at
periodically_call_remote with the :update option.  If your file is
large, you'll want to have the client send the timestamp of the most
recent version of the file it has received and check it to avoid
sending the whole file each time.

The harder way is to push the data out the client periodically.  This
is a well-known problem without a straightforward solution AFAIK.
There's a technique dubbed Comet, which is Flash-based.  Or you could
try keeping the HTTP connection open somehow.  I think this has been
discussed here recently; you could try searching the archives if this
interests you.
7c8f8b6eae4dd991e3a9065c68451361?d=identicon&s=25 Wai Tsang (sneptune)
on 2007-02-04 01:00
George Ogata wrote:
> The first bit is easy.  "@text = File.read(filename)" in the
> controller, and use it somewhere in your view to show it.
>
> The second bit can be done in a couple of ways.
>
> The easier one is to have the client poll the server for changes, and
> send the new text when it has.  Take a look at
> periodically_call_remote with the :update option.  If your file is
> large, you'll want to have the client send the timestamp of the most
> recent version of the file it has received and check it to avoid
> sending the whole file each time.
>
> The harder way is to push the data out the client periodically.  This
> is a well-known problem without a straightforward solution AFAIK.
> There's a technique dubbed Comet, which is Flash-based.  Or you could
> try keeping the HTTP connection open somehow.  I think this has been
> discussed here recently; you could try searching the archives if this
> interests you.

Thanks a lot.  Polling the server for changes and send the entire new
text isn't very efficient if the file is large.  Can ruby read from a
fifo pipe?  And is it possible to check for the pipe periodically for
data?
D5145c421cd25af6fa577c15219add90?d=identicon&s=25 unknown (Guest)
on 2007-02-04 02:49
(Received via mailing list)
Have a look here:

http://juggernaut.rubyforge.org/

I've only just seen it myself, so not sure if it's what you want. I'll
let
you decide!

-Nathan
7c8f8b6eae4dd991e3a9065c68451361?d=identicon&s=25 Wai Tsang (sneptune)
on 2007-02-04 06:52
unknown wrote:
> Have a look here:
>
> http://juggernaut.rubyforge.org/
>
> I've only just seen it myself, so not sure if it's what you want. I'll
> let
> you decide!
>
> -Nathan

It seems like doing File.read("log.pipe") would freeze the application
>_<

Juggernaut looks interesting, but isn't it for creating socket
connections?
C515daf003a781a638d8a01e41a935a0?d=identicon&s=25 George Ogata (Guest)
on 2007-02-04 15:16
(Received via mailing list)
On 2/4/07, Wai Tsang <rails-mailing-list@andreas-s.net> wrote:
>
> Thanks a lot.  Polling the server for changes and send the entire new
> text isn't very efficient if the file is large.  Can ruby read from a
> fifo pipe?  And is it possible to check for the pipe periodically for
> data?

That would not be very efficient, no.  If the file is only being
appended to, you could send the last file size instead, and only send
the extra bytes.

In fact, if you're after a "tail -f" sort of functionality, there was
a thread on this recently: http://rubyurl.com/9n4 .

Ruby can certainly read from fifos -- check the IO docs.  If you're
going to poll the server, I think you'd have an added complication in
that each AJAX update request handler needs to access the same fifo
somehow.  This is quite a complicated road to be going down though
IMHO.
This topic is locked and can not be replied to.