activerecord update progress bar


I have a button that links to a controller which is updating all my
entries in my db with new data, called from an external xml-based web
service. That can take several minutes, so I want to show the actual
progress in the view.

What is the best approach to do that? Java, AJAX...???

I found many 'upload progress bars', but I don't want to upload a

I don't need a bar, it would be enough to show how many records are
left for updating, like this:

37/37 done!

Best way would be without refreshing the page!

Thanks in advance!

You hand the task over to a background server, whichever flavor you prefer (Nanite+Redis, Beanstalkd, …). This means you can keep on serving other requests while the task is being done, as well as having your user browse to another page (and when he requests the status page, you just fetch the current progress).

There’s several ways you can pass the progress to the view:

  • Periodical polling through Ajax

  • Some push server technology (there’s a Railscast at on this subject)

Best regards

Peter De Berdt

Thank you Peter for your reply!

I will look into that deeper, but I think first I have to get my
method run in the background.

I found delayed_job and I think that is exactly what I need, but I
can't get it to work!!!

My method in my controller looks like this:

  def check
    @watchedfamily =[:id]).watchedfamily
    redirect_to watchedfamilies_path

That calls a very large model called Check, which looks like this:

class Check
  attr_reader :watchedfamily
  def initialize(id)
    @watchedfamily = Watchedfamily.find(id)

I already tried in my controller:[:id]).delay

For the second try I changed my Check-Model like this:

class Check <
  def perform
    @watchedfamily = Watchedfamily.find(id)

Nothing worked at all! With the last option I get a entry in my
delayed_jobs table at least, but its never executed. I also tried
"rake jobs", but there I get an error: rake aborted! Don't know how to
build task 'jobs'

I am in development and using WebBrick Server.

I really have no clue how to get this to work!!!

Kind regards

Now I got it!

I was watched the railcast episode about delayed_job and there nobody
told that in the background runs: rake jobs:work or something else to
run the jobs from the list!!!

Now I will look into AJAX to get an update process bar or something...