diff --git a/lib/sidekiq/client.rb b/lib/sidekiq/client.rb index d6421c51..9731a20e 100644 --- a/lib/sidekiq/client.rb +++ b/lib/sidekiq/client.rb @@ -20,8 +20,16 @@ module Sidekiq end end - def self.queues - @queues ||= {} + def self.registered_workers + redis.smembers('workers') + end + + def self.registered_queues + redis.smembers('queues') + end + + def self.queue_mappings + @queue_mappings ||= {} end def self.redis @@ -38,7 +46,7 @@ module Sidekiq raise(ArgumentError, "Message must be a Hash of the form: { 'class' => SomeClass, 'args' => ['bob', 1, :foo => 'bar'] }") unless item.is_a?(Hash) raise(ArgumentError, "Message must include a class and set of arguments: #{item.inspect}") if !item['class'] || !item['args'] - queue = queue || queues[item['class'].to_s] || 'default' + queue = queue || queue_mappings[item['class'].to_s] || 'default' item['class'] = item['class'].to_s if !item['class'].is_a?(String) diff --git a/lib/sidekiq/worker.rb b/lib/sidekiq/worker.rb index 3f640e13..88f74bbc 100644 --- a/lib/sidekiq/worker.rb +++ b/lib/sidekiq/worker.rb @@ -34,7 +34,7 @@ module Sidekiq end def queue(name) - Sidekiq::Client.queues[self.name] = name.to_s + Sidekiq::Client.queue_mappings[self.name] = name.to_s end end end diff --git a/test/test_client.rb b/test/test_client.rb index 25e96e81..ef380633 100644 --- a/test/test_client.rb +++ b/test/test_client.rb @@ -88,5 +88,15 @@ class TestClient < MiniTest::Unit::TestCase assert pushed @redis.verify end + + it 'retrieves queues' do + @redis.expect :smembers, ['bob'], ['queues'] + assert_equal ['bob'], Sidekiq::Client.registered_queues + end + + it 'retrieves workers' do + @redis.expect :smembers, ['bob'], ['workers'] + assert_equal ['bob'], Sidekiq::Client.registered_workers + end end end