diff --git a/lib/sidekiq/api.rb b/lib/sidekiq/api.rb index 00dffcda..1e0ec355 100644 --- a/lib/sidekiq/api.rb +++ b/lib/sidekiq/api.rb @@ -21,10 +21,12 @@ module Sidekiq Sidekiq.redis do |conn| queues = conn.smembers('queues') - queues.inject({}) do |memo, queue| + array_of_arrays = queues.inject({}) do |memo, queue| memo[queue] = conn.llen("queue:#{queue}") memo - end + end.sort_by { |_, size| size } + + Hash[array_of_arrays.reverse] end end diff --git a/test/test_api.rb b/test/test_api.rb index a557d4a7..4e184666 100644 --- a/test/test_api.rb +++ b/test/test_api.rb @@ -38,7 +38,7 @@ class TestApi < MiniTest::Unit::TestCase assert_equal 0, s.queues.size end - it "returns a hash of queue and size" do + it "returns a hash of queue and size in order" do Sidekiq.redis do |conn| conn.rpush 'queue:foo', '{}' conn.sadd 'queues', 'foo' @@ -49,6 +49,7 @@ class TestApi < MiniTest::Unit::TestCase s = Sidekiq::Stats.new assert_equal ({ "foo" => 1, "bar" => 3 }), s.queues + assert_equal "bar", s.queues.first.first end end