From 25aaef1c1549854d65f03f50d21cd365b0c591e6 Mon Sep 17 00:00:00 2001 From: gian Date: Mon, 15 May 2017 08:26:22 -0300 Subject: [PATCH] Stringify queues when checking if a queue is listened on --- lib/sidekiq/scheduler.rb | 15 ++++++++++----- spec/sidekiq/scheduler_spec.rb | 26 ++++++++++++++++++++++++++ 2 files changed, 36 insertions(+), 5 deletions(-) diff --git a/lib/sidekiq/scheduler.rb b/lib/sidekiq/scheduler.rb index da033d8e..400f5546 100644 --- a/lib/sidekiq/scheduler.rb +++ b/lib/sidekiq/scheduler.rb @@ -63,9 +63,10 @@ def load_schedule! @@scheduled_jobs = {} + queues = sidekiq_queues Sidekiq.schedule.each do |name, config| - if !listened_queues_only || enabled_queue?(config['queue']) + if !listened_queues_only || enabled_queue?(config['queue'].to_s, queues) load_schedule_job(name, config) else logger.info { "Ignoring #{name}, job's queue is not enabled." } @@ -284,14 +285,15 @@ def try_to_constantize(klass) klass end - # Returns true if a job's queue is being listened on by sidekiq + # Returns true if a job's queue is included in the array of queues + # + # If queues are empty, returns true. # # @param [String] job_queue Job's queue name + # @param [Array] queues # # @return [Boolean] - def enabled_queue?(job_queue) - queues = Sidekiq.options[:queues] - + def enabled_queue?(job_queue, queues) queues.empty? || queues.include?(job_queue) end @@ -413,6 +415,9 @@ def arguments_with_metadata(args, metadata) end end + def sidekiq_queues + Sidekiq.options[:queues].map(&:to_s) + end end end end diff --git a/spec/sidekiq/scheduler_spec.rb b/spec/sidekiq/scheduler_spec.rb index 7c2a26a9..be462504 100644 --- a/spec/sidekiq/scheduler_spec.rb +++ b/spec/sidekiq/scheduler_spec.rb @@ -268,6 +268,32 @@ end end + context 'when stringified sidekiq queues match symbolized job\'s one' do + before do + Sidekiq.options[:queues] = ['reporting'] + Sidekiq.schedule['some_ivar_job']['queue'] = :reporting + end + + it 'loads the job into the scheduler' do + Sidekiq::Scheduler.load_schedule! + + expect(Sidekiq::Scheduler.scheduled_jobs).to include('some_ivar_job') + end + end + + context 'when symbolized sidekiq queues match stringified job\'s one' do + before do + Sidekiq.options[:queues] = ['reporting'] + Sidekiq.schedule['some_ivar_job']['queue'] = :reporting + end + + it 'loads the job into the scheduler' do + Sidekiq::Scheduler.load_schedule! + + expect(Sidekiq::Scheduler.scheduled_jobs).to include('some_ivar_job') + end + end + context 'when sidekiq queues does not match job\'s one' do before do Sidekiq.options[:queues] = ['mailing']