Hi , How do i schedule a job that can send emails at intervals of time using backgroundrb and rails For testing When i hit the controller i''m able send the emails. but that is not i intend to do ..... I want to use backgroundrb and rails in which i''ll schedule a job for every 5 minutes/ 1 minute or so..... to send an email But when i write .yml file as given by the http://backgroundrb.rubyforge.org/ I''m unable to send emails ....... Infact my backgroundrb_server.log shows that scheduler is not even get triggered for every minute or so I''ve no clue y the Scheduler is not working for every 1 minute or so ........ Any help is appreciated !!!! ------------------------------------ backgroundrb.yml----------------- :host: localhost :port: 2000 :rails_env: development my_scheduler: :class: :mailman_worker :job_key: :foo_name :worker_method: :send_emails_to_people :trigger_args: 0 */1 * * * * * ------------------------------------------my mailman_worker.rb -------- class MailmanWorker < BackgrounDRb::Worker::RailsBase def do_work(args) # This method is called in it''s own new thread when you # call new worker. args is set to :args # Replace this with your code # logger.info(''I am in do work'') end def send_emails_to_people @d_evals = User.find(:all,:conditions => [''id <= ?'',3] for lop in @d_users logger.info(''I am in loop'') @user = User.find(:first, :conditions => [ ''id = ?'',lop.id]) UserNotify.deliver_people_emails(@user) end end end MailmanWorker.register -------------------------------------Controller code----- class TestffController < ApplicationController def a_pop MiddleMan.new_worker(:class => :mailman_worker, :job_key => :foo_name) worker = MiddleMan.worker(:foo_name) worker.send_emails_to_people worker.delete end end --------------------------backgroundrb_server.log--------------------------------------------- I am in do work 20070213-20:15:22 (29661) I am in send_emails_to_people 20070213-20:15:22 (29661) I am in loop 20070213-20:16:04 (29668) Starting WorkerLogger 20070213-20:16:05 (29669) In ResultsWorker 20070213-20:16:07 (29669) I am in do work 20070213-20:16:07 (29669) I am in send_emails_to_evaluators 20070213-20:16:07 (29669) I am in loop 20070213-20:16:13 (29669) I am in loop 20070213-20:16:19 (29669) I am in loop 20070214-13:40:47 (1672) Starting WorkerLogger 20070214-13:40:48 (1673) In ResultsWorker 20070214-13:41:32 (1673) I am in do work 20070214-13:41:32 (1673) I am in send_emails_to_people 20070214-13:41:33 (1673) I am in loop 20070214-13:41:39 (1673) I am in loop 20070214-13:41:46 (1673) I am in loop 0070214-13:45:48 (1694) Starting WorkerLogger 20070214-13:45:49 (1695) In ResultsWorker ------ Ashwin Kumar -- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Ashwin Kumar wrote:> > :host: localhost > :port: 2000 > :rails_env: development > > > my_scheduler: > :class: :mailman_worker > :job_key: :foo_name > :worker_method: :send_emails_to_people > :trigger_args: 0 */1 * * * * *My case is not quite the same, but as I recall, I wasn''t able to make */1 work. I use :trigger_args: 0 * * * * * * To fire the worker once a minute. I''m also not certain that :worker_method works. I use: :worker_method: :do_work And call the "real" method from do_work.> def a_pop > MiddleMan.new_worker(:class => :mailman_worker, :job_key => > :foo_name) > worker = MiddleMan.worker(:foo_name) > worker.send_emails_to_people > worker.delete > end > > endI don''t do this, just set up the config files and (nohup) script/backgroundrb start (The nohup is required if starting it remotely, e.g., from capistrano, to keep it from quitting when you exit the shell you started it from.) I hope this helps. I''ve been using backgroundrb happily for several months for DB backup, session expiration, and periodic emails. --Al Evans -- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
I can''t seem to get backgrounDRb up and running. Here is my "backgroundrb.yml" file ****************************** autostart: 1: job_key: mailing class: mailman_worker Here is "mailman_worker.rb" ************************************* class MailmanWorker < BackgrounDRb::Rails repeat_every 5.minutes first_run Time.now def do_work(args) ## This will send all the emails in the queued_mails table script/runner ''MailQueue.process'' -e development #change "production" to "development" or vice versa depending on what you''re doing kill() end end It never seems to run. What do I need to do to get it to start up automatically, and then run every 5 minutes? Joe -- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---