Fix option not being passed with fetch_multi

In redis cache store, options to `fetch_multi` are passed correctly to
`write_multi` but not to `read_multi`. This causes cache always to be missed
when passing `namespace` option to it.
This commit is contained in:
Rajesh Sharma 2020-07-15 00:05:15 +05:30
parent 9e9a0a501f
commit 4a552c3ab9
3 changed files with 14 additions and 1 deletions

View File

@ -1,3 +1,8 @@
* Fixed issue in `ActiveSupport::Cache::RedisCacheStore` not passing options
to `read_multi` causing `fetch_multi` to not work properly
*Rajesh Sharma*
* Fixed issue in `ActiveSupport::Cache::MemCacheStore` which caused duplicate compression,
and caused the provided `compression_threshold` to not be respected.

View File

@ -351,7 +351,7 @@ module ActiveSupport
def read_multi_entries(names, **options)
if mget_capable?
read_multi_mget(*names)
read_multi_mget(*names, **options)
else
super
end

View File

@ -142,6 +142,14 @@ module ActiveSupport::Cache::RedisCacheStoreTests
end
end
def test_fetch_multi_with_namespace
assert_called_with(@cache.redis, :mget, ["custom-namespace:a", "custom-namespace:b", "custom-namespace:c"], returns: []) do
@cache.fetch_multi("a", "b", "c", namespace: "custom-namespace") do |key|
key * 2
end
end
end
def test_fetch_multi_without_names
assert_not_called(@cache.redis, :mget) do
@cache.fetch_multi() { }