Blog

Thoughts from my daily grind

Resque Scheduler error - this is rufus-scheduler 3.x, use .new instead of .start_new

Posted by Ziyan Junaideen |Published: 31 October 2021 |Category: Ruby on Rails
Default Upload |

The resque-scheduler is an integral part of any legacy Ruby on Rails application that uses Resque for background jobs. During an upgrade of such an application I experienced an unexpected error when booting the resque scheduler with bundle exec rake environment resque:scheduler.

While the best course of action was to upgrade resque, I upgrade one library at a time. In addition it was important to get the application upgraded as fast as possible doing the absolute minima.

gem 'resque',                     '1.23.0'
gem 'resque-scheduler',           '2.0.0'

The Error:

rake aborted!
this is rufus-scheduler 3.x, use .new instead of .start_new
/usr/share/rvm/gems/ruby-2.4.4@givingfire_project/gems/rufus-scheduler-3.8.0/lib/rufus/scheduler.rb:120:in `start_new'
/usr/share/rvm/gems/ruby-2.4.4@givingfire_project/gems/resque-scheduler-2.0.0/lib/resque/scheduler.rb:231:in `rufus_scheduler'
/usr/share/rvm/gems/ruby-2.4.4@givingfire_project/gems/resque-scheduler-2.0.0/lib/resque/scheduler.rb:135:in `block in load_schedule_job'
/usr/share/rvm/gems/ruby-2.4.4@givingfire_project/gems/resque-scheduler-2.0.0/lib/resque/scheduler.rb:132:in `each'
/usr/share/rvm/gems/ruby-2.4.4@givingfire_project/gems/resque-scheduler-2.0.0/lib/resque/scheduler.rb:132:in `load_schedule_job'
/usr/share/rvm/gems/ruby-2.4.4@givingfire_project/gems/resque-scheduler-2.0.0/lib/resque/scheduler.rb:101:in `block in load_schedule!'
/usr/share/rvm/gems/ruby-2.4.4@givingfire_project/gems/resque-scheduler-2.0.0/lib/resque/scheduler.rb:100:in `each'
/usr/share/rvm/gems/ruby-2.4.4@givingfire_project/gems/resque-scheduler-2.0.0/lib/resque/scheduler.rb:100:in `load_schedule!'
/usr/share/rvm/gems/ruby-2.4.4@givingfire_project/gems/resque-scheduler-2.0.0/lib/resque/scheduler.rb:45:in `run'
/usr/share/rvm/gems/ruby-2.4.4@givingfire_project/gems/resque-scheduler-2.0.0/lib/resque_scheduler/tasks.rb:23:in `block (2 levels) in <top (required)>'
/usr/share/rvm/gems/ruby-2.4.4@givingfire_project/gems/rake-13.0.6/exe/rake:27:in `<top (required)>'
/usr/share/rvm/gems/ruby-2.4.4@givingfire_project/bin/ruby_executable_hooks:24:in `eval'
/usr/share/rvm/gems/ruby-2.4.4@givingfire_project/bin/ruby_executable_hooks:24:in `<main>'
Tasks: TOP => resque:scheduler

When inspecting I noticed that the rufus scheduler was v3.8. I checked the master branch and I noticed that the rufus-scheduler got updated from v2.0.19 to v3.8.0.

When upgrading I upgrade one library at a time and it was not the time to upgrade Rseque scheduler. I got the scheduler to run again by pinning the version.

gem 'rufus-scheduler',            '2.0.19'
gem 'resque',                     '1.23.0'
gem 'resque-scheduler',           '2.0.0'

After running bundle udpate the bundle exec rake environment resque:scheduler is working again.

Tags
About the Author

Ziyan Junaideen -

Ziyan is an expert Ruby on Rails web developer with 8 years of experience specializing in SaaS applications. He spends his free time he writes blogs, drawing on his iPad, shoots photos.

Comments