aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Verhasselt <david@crowdway.com>2019-04-12 15:40:29 +0300
committerDavid Verhasselt <david@crowdway.com>2019-04-12 16:12:14 +0300
commit5e21667496ded39e575640dcebe21cacd2e04ef6 (patch)
treecd6ab1dc0789491def2ad3cc1900b1390e5f4c1d
parent3bd534287139549cee10e10364344d66139d9237 (diff)
downloadrails-5e21667496ded39e575640dcebe21cacd2e04ef6.tar.gz
rails-5e21667496ded39e575640dcebe21cacd2e04ef6.tar.bz2
rails-5e21667496ded39e575640dcebe21cacd2e04ef6.zip
Redis fetch without names returns {}
When trying to call mget in Redis without any parameters, a Redis error is thrown. To avoid this, we circumvent Redis entirely when there are no key names given.
-rw-r--r--activesupport/lib/active_support/cache/redis_cache_store.rb1
-rw-r--r--activesupport/test/cache/stores/redis_cache_store_test.rb6
2 files changed, 7 insertions, 0 deletions
diff --git a/activesupport/lib/active_support/cache/redis_cache_store.rb b/activesupport/lib/active_support/cache/redis_cache_store.rb
index 9a55e49e27..87f9aa5346 100644
--- a/activesupport/lib/active_support/cache/redis_cache_store.rb
+++ b/activesupport/lib/active_support/cache/redis_cache_store.rb
@@ -361,6 +361,7 @@ module ActiveSupport
def read_multi_mget(*names)
options = names.extract_options!
options = merged_options(options)
+ return {} if names == []
keys = names.map { |name| normalize_key(name, options) }
diff --git a/activesupport/test/cache/stores/redis_cache_store_test.rb b/activesupport/test/cache/stores/redis_cache_store_test.rb
index 1d87f74347..790534cd3c 100644
--- a/activesupport/test/cache/stores/redis_cache_store_test.rb
+++ b/activesupport/test/cache/stores/redis_cache_store_test.rb
@@ -140,6 +140,12 @@ module ActiveSupport::Cache::RedisCacheStoreTests
end
end
+ def test_fetch_multi_without_names
+ assert_not_called(@cache.redis, :mget) do
+ @cache.fetch_multi() { }
+ end
+ end
+
def test_increment_expires_in
assert_called_with @cache.redis, :incrby, [ "#{@namespace}:foo", 1 ] do
assert_called_with @cache.redis, :expire, [ "#{@namespace}:foo", 60 ] do