scheduling a job every minute Rails 3.1 on Heroku
Clockwork is the way to go but I will suggest another workaround.
Use scheduler (every 10min) + delayed jobs to execute the task every minute. This seems a little bit more reliable solution than the one without scheduler.
MyJob.run!
(1..8).each |i|
MyJob.delay(run_at: i.minutes.from_now).run! # create 8 more jobs (each start 1 minute later)
end
As of today, you can the scheduling gem, clockwork. Heroku officially supports this and you can find their documentation here.
You could use delayed_job with a self-restarting job with a :run_at
. Something sort of like this:
class YourJob
def do_interesting_things
#... Do what needs to be done.
self.delay(:run_at => 1.minute.from_now).do_interesting_things
end
def self.start_me_up
new.do_interesting_things
end
end
And then somewhere during your application's initialization:
YourJob.start_me_up