diff --git a/lib/sidekiq.rb b/lib/sidekiq.rb index 315fb173..36cb4cab 100644 --- a/lib/sidekiq.rb +++ b/lib/sidekiq.rb @@ -66,8 +66,11 @@ module Sidekiq def self.redis(&block) raise ArgumentError, "requires a block" if !block + redis_connection.with(&block) + end + + def self.redis_connection @redis ||= Sidekiq::RedisConnection.create - @redis.with(&block) end def self.redis=(hash) diff --git a/lib/sidekiq/client.rb b/lib/sidekiq/client.rb index 21b6932f..01a84057 100644 --- a/lib/sidekiq/client.rb +++ b/lib/sidekiq/client.rb @@ -25,6 +25,10 @@ module Sidekiq @chain end + def initialize(redis_connection = Sidekiq.redis_connection) + @redis_connection = redis_connection + end + ## # The main method used to push a job to Redis. Accepts a number of options: # @@ -135,7 +139,7 @@ module Sidekiq def raw_push(payloads) pushed = false - Sidekiq.redis do |conn| + @redis_connection.with do |conn| if payloads.first['at'] pushed = conn.zadd('schedule', payloads.map do |hash| at = hash.delete('at').to_s diff --git a/test/test_client.rb b/test/test_client.rb index d1bb7676..b1aa6292 100644 --- a/test/test_client.rb +++ b/test/test_client.rb @@ -20,10 +20,12 @@ class TestClient < Sidekiq::Test def @redis.with; yield self; end def @redis.exec; true; end Sidekiq.instance_variable_set(:@redis, @redis) + Sidekiq::Client.instance_variable_set(:@default, nil) end after do Sidekiq.instance_variable_set(:@redis, REDIS) + Sidekiq::Client.instance_variable_set(:@default, nil) end it 'raises ArgumentError with invalid params' do diff --git a/test/test_scheduling.rb b/test/test_scheduling.rb index 88b8b937..10184291 100644 --- a/test/test_scheduling.rb +++ b/test/test_scheduling.rb @@ -4,6 +4,7 @@ require 'sidekiq/scheduled' class TestScheduling < Sidekiq::Test describe 'middleware' do before do + Sidekiq::Client.instance_variable_set(:@default, nil) @redis = Minitest::Mock.new # Ugh, this is terrible. Sidekiq.instance_variable_set(:@redis, @redis) @@ -11,6 +12,10 @@ class TestScheduling < Sidekiq::Test def @redis.with; yield self; end end + after do + Sidekiq::Client.instance_variable_set(:@default, nil) + end + class ScheduledWorker include Sidekiq::Worker sidekiq_options :queue => :custom_queue