aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport
diff options
context:
space:
mode:
authorRei <chloerei@gmail.com>2018-04-15 00:43:14 +0800
committerRei <chloerei@gmail.com>2018-04-15 00:43:14 +0800
commit92db9e46f8dced015a236f073187e4ea50c7e13c (patch)
treefd5970063a29a0d2386d6b478b9e6b8832e2eaf4 /activesupport
parent662ba236d115d3e2152b04dcdefdc0ee6f1f6102 (diff)
downloadrails-92db9e46f8dced015a236f073187e4ea50c7e13c.tar.gz
rails-92db9e46f8dced015a236f073187e4ea50c7e13c.tar.bz2
rails-92db9e46f8dced015a236f073187e4ea50c7e13c.zip
Fix redis store clear keys outside the namespace
Namespace not working in RedisCacheStore#clear method. Bacause namespace = merged_options(options)[namespace] is always nil, Correct is namespace = merged_options(options)[:namespace]
Diffstat (limited to 'activesupport')
-rw-r--r--activesupport/lib/active_support/cache/redis_cache_store.rb2
-rw-r--r--activesupport/test/cache/stores/redis_cache_store_test.rb18
2 files changed, 19 insertions, 1 deletions
diff --git a/activesupport/lib/active_support/cache/redis_cache_store.rb b/activesupport/lib/active_support/cache/redis_cache_store.rb
index a1cb6db25d..74f935e02e 100644
--- a/activesupport/lib/active_support/cache/redis_cache_store.rb
+++ b/activesupport/lib/active_support/cache/redis_cache_store.rb
@@ -286,7 +286,7 @@ module ActiveSupport
# Failsafe: Raises errors.
def clear(options = nil)
failsafe :clear do
- if namespace = merged_options(options)[namespace]
+ if namespace = merged_options(options)[:namespace]
delete_matched "*", namespace: namespace
else
redis.with { |c| c.flushdb }
diff --git a/activesupport/test/cache/stores/redis_cache_store_test.rb b/activesupport/test/cache/stores/redis_cache_store_test.rb
index dda96b68fb..3cae2bb11f 100644
--- a/activesupport/test/cache/stores/redis_cache_store_test.rb
+++ b/activesupport/test/cache/stores/redis_cache_store_test.rb
@@ -221,4 +221,22 @@ module ActiveSupport::Cache::RedisCacheStoreTests
end
end
end
+
+ class ClearTest < StoreTest
+ test "clear all cache key" do
+ @cache.write("foo", "bar")
+ @cache.write("fu", "baz")
+ @cache.clear
+ assert !@cache.exist?("foo")
+ assert !@cache.exist?("fu")
+ end
+
+ test "only clear namespace cache key" do
+ @cache.write("foo", "bar")
+ @cache.redis.set("fu", "baz")
+ @cache.clear
+ assert !@cache.exist?("foo")
+ assert @cache.redis.exists("fu")
+ end
+ end
end