Resque Scheduler error - this is rufus-scheduler 3.x, use .new instead of .start_new
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.
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.