How can I schedule an action?

I have a background code with backgroundfu:

# Simple, non-monitored worker. class ReportWorker

  def add()     Report.generate_rep()   end

end

I want this code only to run on Fridays and only to run one time every Friday. How can I do that?

John Smith wrote:

I have a background code with backgroundfu:

# Simple, non-monitored worker. class ReportWorker

  def add()     Report.generate_rep()   end

end

I want this code only to run on Fridays and only to run one time every Friday. How can I do that?

Sounds like a job for cron and script/runner. Or even cron and a rake task. Doesn't sound like you need any kind of "background" functionality. That would seem like overkill.

How about some kind of loop? Why using cron? Is it the best option? I have backgroundfu working.

I don't think backgroundFu is for scheduled tasks. If you use backgroundrb, though, you can just do this:

class HelloWorker < BackgrounDRb::MetaWorker   set_worker_name :hello_worker

  def create(args = nil)     # time argument is in seconds     add_periodic_timer(604800) { expire_sessions }   end

  def expire_sessions     # expire user sessions   end end

or if you want a more precise scheduling, use can use cron or the unix scheduler through backgroundrb

http://backgroundrb.rubyforge.org/scheduling/index.html

Nathan Esquenazi wrote:

I don't think backgroundFu is for scheduled tasks. If you use backgroundrb, though, you can just do this:

class HelloWorker < BackgrounDRb::MetaWorker   set_worker_name :hello_worker

  def create(args = nil)     # time argument is in seconds     add_periodic_timer(604800) { expire_sessions }   end

  def expire_sessions     # expire user sessions   end end

or if you want a more precise scheduling, use can use cron or the unix scheduler through backgroundrb

http://backgroundrb.rubyforge.org/scheduling/index.html

For now, what I have done is some kink of loop with Backgroundfu. It seems not to use a lot of CPU but I have to test it for some time.