From 025951e360578be73eaf378d07f66901662a9015 Mon Sep 17 00:00:00 2001 From: Markus Doits Date: Fri, 16 Nov 2018 19:01:09 +0100 Subject: [PATCH 1/2] support redis-namespace client --- activejob-traffic_control.gemspec | 1 + lib/active_job/traffic_control.rb | 2 +- test/active_job/traffic_control_test.rb | 20 ++++++++++++++++++++ test/test_helper.rb | 1 + 4 files changed, 23 insertions(+), 1 deletion(-) diff --git a/activejob-traffic_control.gemspec b/activejob-traffic_control.gemspec index c72a06e..d7988ca 100644 --- a/activejob-traffic_control.gemspec +++ b/activejob-traffic_control.gemspec @@ -28,4 +28,5 @@ Gem::Specification.new do |spec| spec.add_development_dependency "minitest", "~> 5.0" spec.add_development_dependency "codeclimate-test-reporter", "~> 0.4.7" spec.add_development_dependency "connection_pool" + spec.add_development_dependency "redis-namespace", "~> 1.6" end diff --git a/lib/active_job/traffic_control.rb b/lib/active_job/traffic_control.rb index 2c4c9ec..869d932 100644 --- a/lib/active_job/traffic_control.rb +++ b/lib/active_job/traffic_control.rb @@ -58,7 +58,7 @@ def client=(cli) def client_class_type(client) if client.instance_of?(Dalli::Client) Suo::Client::Memcached - elsif client.instance_of?(::Redis) + elsif client.instance_of?(::Redis) || client.instance_of?(::Redis::Namespace) Suo::Client::Redis else raise ArgumentError, "Unsupported client type: #{client}" diff --git a/test/active_job/traffic_control_test.rb b/test/active_job/traffic_control_test.rb index be2ed2d..3a5d2a8 100644 --- a/test/active_job/traffic_control_test.rb +++ b/test/active_job/traffic_control_test.rb @@ -235,3 +235,23 @@ def setup setup_globals end end + +class RedisNamespacedTrafficControlTest < Minitest::Test + include ActiveJob::TrafficControlTest + + def setup + ActiveJob::TrafficControl.client = Redis::Namespace.new(:namespace, redis: Redis.new) + setup_globals + end +end + +class RedisNamespacedPooldedTrafficControlTest < Minitest::Test + include ActiveJob::TrafficControlTest + + def setup + ActiveJob::TrafficControl.client = ConnectionPool.new(size: 5, timeout: 5) do + Redis::Namespace.new(:namespace, redis: Redis.new) + end + setup_globals + end +end diff --git a/test/test_helper.rb b/test/test_helper.rb index 675c74d..96dc36f 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -14,6 +14,7 @@ require "activejob/traffic_control" require "active_job" require "minitest/autorun" +require "redis/namespace" test_logger = begin l = Logger.new(STDOUT) From 654a1ed5bf95a4248d86b7d82871c061b4ba018d Mon Sep 17 00:00:00 2001 From: Markus Doits Date: Fri, 16 Nov 2018 19:06:09 +0100 Subject: [PATCH 2/2] don't require redis-namespace gem --- lib/active_job/traffic_control.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/active_job/traffic_control.rb b/lib/active_job/traffic_control.rb index 869d932..31dfe56 100644 --- a/lib/active_job/traffic_control.rb +++ b/lib/active_job/traffic_control.rb @@ -58,7 +58,7 @@ def client=(cli) def client_class_type(client) if client.instance_of?(Dalli::Client) Suo::Client::Memcached - elsif client.instance_of?(::Redis) || client.instance_of?(::Redis::Namespace) + elsif client.instance_of?(::Redis) || defined?(::Redis::Namespace) && client.instance_of?(::Redis::Namespace) Suo::Client::Redis else raise ArgumentError, "Unsupported client type: #{client}"