-
Notifications
You must be signed in to change notification settings - Fork 40
Closed
Description
Issue description
Im trying to implement sidekiq-scheduler or sidekiq-cron, I got an error at starting sidekiq
How to reproduce
gem 'sidekiq', '7.2.0'
gem "sidekiq-scheduler", "~> 5.0"
gem "fugit", "1.11.1"
then run: bundle exec sidekiq
Following the code, I found that the issue is here : /Users/xx/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/fugit-1.11.1/lib/fugit/cron.rb
def do_determine(key, arr, min, max)
null = false
r = arr
.collect { |v|
expand(min, max, v) }
.flatten(1)
.collect { |e|
return false if e == false
null = null || e == nil
(key == :hours && e == 24) ? 0 : e }
return nil if null
r.uniq.sort
end
I try it in the console too:
Loading development environment (Rails 7.1.4)
irb(main):001> require 'fugit'
=> false
irb(main):002> Fugit::Cron.parse('0 1 * * *')
(irb):2:in `<main>': undefined method `collect' for nil:NilClass (NoMethodError)
.collect { |v|
^^^^^^^^
Did you mean? collectionize
Error and error backtrace (if any)
(This should look like:
2024-09-05T11:46:53.088Z pid=95410 tid=1rsu INFO: Booted Rails 7.1.2 application in development environment
2024-09-05T11:46:53.088Z pid=95410 tid=1rsu INFO: Running in ruby 3.2.2 (2023-03-30 revision e51014f9c0) [arm64-darwin22]
2024-09-05T11:46:53.088Z pid=95410 tid=1rsu INFO: See LICENSE and the LGPL-3.0 for licensing details.
2024-09-05T11:46:53.088Z pid=95410 tid=1rsu INFO: Upgrade to Sidekiq Pro for more features and support: https://sidekiq.org
2024-09-05T11:46:53.088Z pid=95410 tid=1rsu INFO: Sidekiq 7.2.0 connecting to Redis with options {:size=>10, :pool_name=>"internal", :url=>"redis://localhost:6379/0"}
2024-09-05T11:46:53.090Z pid=95410 tid=1rsu INFO: Sidekiq 7.2.0 connecting to Redis with options {:size=>5, :pool_name=>"default", :url=>"redis://localhost:6379/0"}
2024-09-05T11:46:53.091Z pid=95410 tid=1rsu INFO: Loading Schedule
2024-09-05T11:46:53.091Z pid=95410 tid=1rsu INFO: Schedule empty! Set Sidekiq.schedule
2024-09-05T11:46:53.091Z pid=95410 tid=1rsu INFO: Schedules Loaded
2024-09-05T11:46:53.093Z pid=95410 tid=1rsu INFO: Reloading Schedule
2024-09-05T11:46:53.094Z pid=95410 tid=1rsu INFO: Loading Schedule
2024-09-05T11:46:53.094Z pid=95410 tid=1rsu INFO: Scheduling test_schedule_job {"cron"=>"0 * * * * *", "class"=>"TestScheduleJob", "queue"=>"scheduler"}
2024-09-05T11:46:53.094Z pid=95410 tid=1rsu WARN: {"context":"Exception during Sidekiq lifecycle event.","event":"startup"}
2024-09-05T11:46:53.095Z pid=95410 tid=1rsu WARN: NoMethodError: undefined method `collect' for nil:NilClass
2024-09-05T11:46:53.095Z pid=95410 tid=1rsu WARN: config/initializers/sidekiq.rb:13:in `block (2 levels) in <main>'
undefined method `collect' for nil:NilClass
/Users/luiscastillo/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/fugit-1.11.1/lib/fugit/cron.rb:649:in `do_determine'
/Users/luiscastillo/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/fugit-1.11.1/lib/fugit/cron.rb:666:in `determine_minutes'
/Users/luiscastillo/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/fugit-1.11.1/lib/fugit/cron.rb:568:in `init'
/Users/luiscastillo/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/fugit-1.11.1/lib/fugit/cron.rb:43:in `parse'
/Users/luiscastillo/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/fugit-1.11.1/lib/fugit/cron.rb:48:in `do_parse'
/Users/luiscastillo/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/rufus-scheduler-3.9.2/lib/rufus/scheduler/jobs_repeat.rb:271:in `initialize'
/Users/luiscastillo/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/rufus-scheduler-3.9.2/lib/rufus/scheduler.rb:724:in `new'
/Users/luiscastillo/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/rufus-scheduler-3.9.2/lib/rufus/scheduler.rb:724:in `do_schedule'
/Users/luiscastillo/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/rufus-scheduler-3.9.2/lib/rufus/scheduler.rb:226:in `cron'
/Users/luiscastillo/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/sidekiq-scheduler-5.0.6/lib/sidekiq-scheduler/scheduler.rb:266:in `new_job'
/Users/luiscastillo/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/sidekiq-scheduler-5.0.6/lib/sidekiq-scheduler/scheduler.rb:130:in `block in load_schedule_job'
/Users/luiscastillo/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/sidekiq-scheduler-5.0.6/lib/sidekiq-scheduler/scheduler.rb:123:in `each'
/Users/luiscastillo/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/sidekiq-scheduler-5.0.6/lib/sidekiq-scheduler/scheduler.rb:123:in `load_schedule_job'
/Users/luiscastillo/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/sidekiq-scheduler-5.0.6/lib/sidekiq-scheduler/scheduler.rb:101:in `block in load_schedule!'
/Users/luiscastillo/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/sidekiq-scheduler-5.0.6/lib/sidekiq-scheduler/scheduler.rb:99:in `each'
/Users/luiscastillo/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/sidekiq-scheduler-5.0.6/lib/sidekiq-scheduler/scheduler.rb:99:in `load_schedule!'
/Users/luiscastillo/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/sidekiq-scheduler-5.0.6/lib/sidekiq-scheduler/scheduler.rb:208:in `reload_schedule!'
/Users/luiscastillo/projects/vangow/vangow-api/config/initializers/sidekiq.rb:13:in `block (2 levels) in <main>'
/Users/luiscastillo/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/sidekiq-7.2.0/lib/sidekiq/component.rb:60:in `block in fire_event'
/Users/luiscastillo/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/sidekiq-7.2.0/lib/sidekiq/component.rb:59:in `each'
/Users/luiscastillo/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/sidekiq-7.2.0/lib/sidekiq/component.rb:59:in `fire_event'
/Users/luiscastillo/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/sidekiq-7.2.0/lib/sidekiq/cli.rb:106:in `run'
/Users/luiscastillo/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/sidekiq-7.2.0/bin/sidekiq:31:in `<top (required)>'
)
Expected behaviour
Sidekiq starts normally and schedules jobs work.
Context
It is a rails api project using mongodb
Additional context
test_schedule_job:
cron: '0 1 * * *'
class: TestScheduleJob
queue: scheduler
# config/initializer/sidekiq.rb
require 'sidekiq'
Sidekiq.configure_client do |config|
config.redis = { url: ENV.fetch('REDIS_URL', nil) }
end
Sidekiq.configure_server do |config|
config.redis = { url: ENV.fetch('REDIS_URL', nil) }
config.on(:startup) do
Sidekiq.schedule = YAML.load_file(File.expand_path('../schedule.yml', __dir__))
SidekiqScheduler::Scheduler.instance.reload_schedule!
end
end
Metadata
Metadata
Assignees
Labels
No labels