Search code examples
ruby-on-railsrubyrufus-scheduler

How to make Rufus-scheduler reflect file changes


I'm using Rufus-scheduler gem in my ROR application to send emails in the background. My setup is like:

# config/initializers/rufus_scheduler.rb

scheduler = Rufus::Scheduler.new(lockfile: '.rufus-scheduler.lock')

scheduler.cron '0 2 * * fri' do
    UserMailer.send_some_emails
end

Any changes I make in the .send_some_email class method isn't reflected in the Rufus-scheduler task, how can I fix this? I don't want to restart the server every time I make a change!


Solution

  • Let's assume UserMailer.send_some_emails is defined in whatever/user_mailer.rb

    scheduler = Rufus::Scheduler.new(:lockfile => '.rufus-scheduler.lock')
    
    scheduler.cron '0 2 * * fri' do
      load 'whatever/user_mailer.rb'
      UserMailer.send_some_emails
    end