I have a Rails 3 app that uses delayed_job to fetch some data (with a class method) when the user hits the page. How can I indicate to the ajax process that the class method has run (so that I can stop polling)?
EDIT:
To clarify, I want to know when the delayed_job has run, not when the ajax process has succeeded. Then I want to pass the delayed_job completed status to the running ajax process.
With this gem you can have progress tracking directly on the
Delayed::Job
object itself: https://github.com/GBH/delayed_job_progressCompleted jobs are no longer automatically removed, so you can poll against a job until it comes back with
completed
state.Typically, the best way to do this is to store, in your database, an indication of the job's progress. For instance:
So that when you enqueue the job:
You can query, in your controller, the status of the job:
You polling ajax process can then simply call check_status to see how the job is progressing, if it has succeeded or if it has failed.
If you are using any JavaScript framework like prototypejs, then in the optional options hash, you usually provide a onComplete and/or onSuccess callback. API Reference