Streaming in Rails 3.2

Hello all,

I am writing an app to stream log files (or any files) on the browser as
they grow. The idea is that the rails app should do a ‘tail -f’ on the
file and keep sending the data to the browser. I was thinking if there
was any way to achieve this in rails.

Through googling, I came across the ‘streaming’ support in rails. But, I
didn’t get it working. Here is what I tried

class LogsController < ApplicationController

def index
headers[‘X-Accel-Buffering’] = ‘no’
self.status = 200
self.response_body = Streamer.new
end

end

class Streamer
def each
100000.times do |n|
yield "Streaming…#{n} "
if (n % 1000 == 0)
sleep 1
end
end
end
end

The browser time outs waiting for the data.

Can you please let me know how can I achieve this functionality in
rails?

thanks
ravi

I the client poll every few seconds via AJAX. There is no other way.
Am 09.12.2012 14:28 schrieb “Ravi L.” [email protected]:

On Sat, Dec 8, 2012 at 6:49 AM, Ravi L. [email protected]
wrote:

I am writing an app to stream log files (or any files) on the browser as they
grow. The idea is that the rails app should do a ‘tail -f’ on the file and keep
sending the data to the browser. I was thinking if there was any way to achieve
this in rails.

You might want to look into “WebSockets”, which allow keeping a
connection open between client and server.

HTH,

Hassan S. ------------------------ [email protected]
http://about.me/hassanschroeder
twitter: @hassan

Thanks all for your responses. I am looking to use Web sockets.

thanks
ravi

The other way is to couple your app with either Faye or Juggernaut.