From 6f2aa60c5b343974a22d60e104973a1a2a31deb4 Mon Sep 17 00:00:00 2001 From: Benjamin Fleischer Date: Tue, 23 Aug 2022 09:47:56 -0500 Subject: [PATCH 1/6] Flipper fails with Redis >= 4.8.0 --- flipper-redis.gemspec | 2 +- spec/flipper/adapters/redis_spec.rb | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/flipper-redis.gemspec b/flipper-redis.gemspec index 2bb807beb..d667cb42d 100644 --- a/flipper-redis.gemspec +++ b/flipper-redis.gemspec @@ -21,5 +21,5 @@ Gem::Specification.new do |gem| gem.metadata = Flipper::METADATA gem.add_dependency 'flipper', "~> #{Flipper::VERSION}" - gem.add_dependency 'redis', '>= 3.0', '< 5' + gem.add_dependency 'redis', '>= 4.8.0', '< 5' end diff --git a/spec/flipper/adapters/redis_spec.rb b/spec/flipper/adapters/redis_spec.rb index 1f1236494..baffed376 100644 --- a/spec/flipper/adapters/redis_spec.rb +++ b/spec/flipper/adapters/redis_spec.rb @@ -6,6 +6,7 @@ options[:url] = ENV['REDIS_URL'] if ENV['REDIS_URL'] + Redis.raise_deprecations = true Redis.new(options) end From 19775c73972f2c88cdbb2866a0814c142c4b370d Mon Sep 17 00:00:00 2001 From: Benjamin Fleischer Date: Tue, 23 Aug 2022 10:14:04 -0500 Subject: [PATCH 2/6] Address Redis Deprecation --- lib/flipper/adapters/redis.rb | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/lib/flipper/adapters/redis.rb b/lib/flipper/adapters/redis.rb index b307abeff..85ce7ea85 100644 --- a/lib/flipper/adapters/redis.rb +++ b/lib/flipper/adapters/redis.rb @@ -26,15 +26,33 @@ def features read_feature_keys end + def self.redis_sadd_returns_boolean? + return @redis_sadd_returns_boolean if defined?(@redis_sadd_returns_boolean) + @redis_sadd_returns_boolean = true + if ::Redis.respond_to?(:sadd_returns_boolean) + ::Redis.sadd_returns_boolean + else + false + end + end + # Public: Adds a feature to the set of known features. def add(feature) - @client.sadd FeaturesKey, feature.key + if self.class.redis_sadd_returns_boolean? + @client.sadd? FeaturesKey, feature.key + else + @client.sadd FeaturesKey, feature.key + end true end # Public: Removes a feature from the set of known features. def remove(feature) - @client.srem FeaturesKey, feature.key + if self.class.redis_sadd_returns_boolean? + @client.srem? FeaturesKey, feature.key + else + @client.srem FeaturesKey, feature.key + end @client.del feature.key true end From 13af8cd14a3a68aca5213ce518a4097183282225 Mon Sep 17 00:00:00 2001 From: Benjamin Fleischer Date: Tue, 23 Aug 2022 10:14:51 -0500 Subject: [PATCH 3/6] Restore redis gemspec range --- flipper-redis.gemspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flipper-redis.gemspec b/flipper-redis.gemspec index d667cb42d..2bb807beb 100644 --- a/flipper-redis.gemspec +++ b/flipper-redis.gemspec @@ -21,5 +21,5 @@ Gem::Specification.new do |gem| gem.metadata = Flipper::METADATA gem.add_dependency 'flipper', "~> #{Flipper::VERSION}" - gem.add_dependency 'redis', '>= 4.8.0', '< 5' + gem.add_dependency 'redis', '>= 3.0', '< 5' end From 9d994a8e8d5b2a065352c2995afa2971a483d66c Mon Sep 17 00:00:00 2001 From: Benjamin Fleischer Date: Thu, 25 Aug 2022 07:44:23 -0500 Subject: [PATCH 4/6] Update lib/flipper/adapters/redis.rb Co-authored-by: Mikhail Dieterle --- lib/flipper/adapters/redis.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/flipper/adapters/redis.rb b/lib/flipper/adapters/redis.rb index 85ce7ea85..c855d9f56 100644 --- a/lib/flipper/adapters/redis.rb +++ b/lib/flipper/adapters/redis.rb @@ -28,7 +28,7 @@ def features def self.redis_sadd_returns_boolean? return @redis_sadd_returns_boolean if defined?(@redis_sadd_returns_boolean) - @redis_sadd_returns_boolean = true + @redis_sadd_returns_boolean = if ::Redis.respond_to?(:sadd_returns_boolean) ::Redis.sadd_returns_boolean else From 3ef5e4a64703e9b6de9136af32a4c18c707c9632 Mon Sep 17 00:00:00 2001 From: Brandon Keepers Date: Thu, 25 Aug 2022 17:01:24 -0400 Subject: [PATCH 5/6] Simplify check for redis changes --- lib/flipper/adapters/redis.rb | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/lib/flipper/adapters/redis.rb b/lib/flipper/adapters/redis.rb index c855d9f56..ea1f84861 100644 --- a/lib/flipper/adapters/redis.rb +++ b/lib/flipper/adapters/redis.rb @@ -26,19 +26,9 @@ def features read_feature_keys end - def self.redis_sadd_returns_boolean? - return @redis_sadd_returns_boolean if defined?(@redis_sadd_returns_boolean) - @redis_sadd_returns_boolean = - if ::Redis.respond_to?(:sadd_returns_boolean) - ::Redis.sadd_returns_boolean - else - false - end - end - # Public: Adds a feature to the set of known features. def add(feature) - if self.class.redis_sadd_returns_boolean? + if redis_sadd_returns_boolean? @client.sadd? FeaturesKey, feature.key else @client.sadd FeaturesKey, feature.key @@ -48,7 +38,7 @@ def add(feature) # Public: Removes a feature from the set of known features. def remove(feature) - if self.class.redis_sadd_returns_boolean? + if redis_sadd_returns_boolean? @client.srem? FeaturesKey, feature.key else @client.srem FeaturesKey, feature.key @@ -127,6 +117,10 @@ def disable(feature, gate, thing) private + def redis_sadd_returns_boolean? + ::Redis.respond_to?(:sadd_returns_boolean) && ::Redis.sadd_returns_boolean + end + def read_many_features(features) docs = docs_for(features) result = {} From ed32fb93741bc5384e25d09cebc37d1b2d54a2ae Mon Sep 17 00:00:00 2001 From: Brandon Keepers Date: Thu, 25 Aug 2022 17:03:22 -0400 Subject: [PATCH 6/6] Update changelog --- Changelog.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Changelog.md b/Changelog.md index 6d256c05c..1c0a905d0 100644 --- a/Changelog.md +++ b/Changelog.md @@ -1,3 +1,7 @@ +## 0.25.2 + +* Fix deprecation warnings for Redis >= 4.8.0 (https://github.com/jnunemaker/flipper/pull/660) + ## 0.25.1 ### Additions/Changes