Uninitialized constant Resque::Scheduler::Redis
dingn1 opened this issue · 8 comments
Seems like after the change in master #636 started to get this error:
NameError: uninitialized constant Resque::Scheduler::Redis
/var/lib/gems/2.5.0/bundler/gems/resque-scheduler-bbf4930c2802/lib/resque/scheduler.rb:17:in `<module:Scheduler>'
/var/lib/gems/2.5.0/bundler/gems/resque-scheduler-bbf4930c2802/lib/resque/scheduler.rb:11:in `<module:Resque>'
/var/lib/gems/2.5.0/bundler/gems/resque-scheduler-bbf4930c2802/lib/resque/scheduler.rb:10:in `<top (required)>'
/var/lib/gems/2.5.0/bundler/gems/resque-scheduler-bbf4930c2802/lib/resque-scheduler.rb:2:in `require_relative'
/var/lib/gems/2.5.0/bundler/gems/resque-scheduler-bbf4930c2802/lib/resque-scheduler.rb:2:in `<top (required)>'
/var/lib/gems/2.5.0/bundler/gems/resque-scheduler-bbf4930c2802/lib/resque/scheduler/tasks.rb:4:in `require'
/var/lib/gems/2.5.0/bundler/gems/resque-scheduler-bbf4930c2802/lib/resque/scheduler/tasks.rb:4:in `<top (required)>'
Not sure what is the problem.
Looks like it's now expecting that redis
gem was loaded before redis-scheduler
.
Thanks for that suggestion it worked!
I don't understand how to fix this
I think in the code that you require resque-scheduler
require redis
first
Getting the same with the stand alone version.
➜ resque-scheduler -I config/resque-scheduler.rb
bundler: failed to load command: resque-scheduler (/bundle/bin/resque-scheduler)
NameError: uninitialized constant Resque::Scheduler::Redis
/bundle/gems/resque-scheduler-4.4.0/lib/resque/scheduler.rb:17:in `<module:Scheduler>'
/bundle/gems/resque-scheduler-4.4.0/lib/resque/scheduler.rb:11:in `<module:Resque>'
/bundle/gems/resque-scheduler-4.4.0/lib/resque/scheduler.rb:10:in `<top (required)>'
/bundle/gems/resque-scheduler-4.4.0/lib/resque-scheduler.rb:2:in `require_relative'
/bundle/gems/resque-scheduler-4.4.0/lib/resque-scheduler.rb:2:in `<top (required)>'
/bundle/gems/resque-scheduler-4.4.0/exe/resque-scheduler:4:in `require'
/bundle/gems/resque-scheduler-4.4.0/exe/resque-scheduler:4:in `<top (required)>'
/bundle/bin/resque-scheduler:23:in `load'
/bundle/bin/resque-scheduler:23:in `<top (required)>'
The file config/resque-scheduler.rb
has the require 'redis'
in first line, but it seems it's ignored.
As far as I can tell the new version was never released with this fix included. Someone correct me if I'm wrong. In the meantime you can work around this by simply creating script:
bin/resque-scheduler
#!/usr/bin/env ruby
# This file is a workaround arund a bug in resque-scheduler.
# Fixed by this PR: https://github.com/resque/resque-scheduler/pull/671/files
# but new version was never released as far as I can tell
require 'rubygems'
require 'redis/errors'
version = '~> 4.4.0'
if Gem.respond_to?(:activate_bin_path)
load Gem.activate_bin_path('resque-scheduler', 'resque-scheduler', version)
else
gem "resque-scheduler", version
load Gem.bin_path("resque-scheduler", "resque-scheduler", version)
end
@swistak what version of resque-scheduler are you on?
I think this is fixed here. If you are using the latest resque-scheduler you should be fine.
Indeed it was fixed in the newest one. I was convinced I'm on newest one. My bad for not double checking. Sorry