RedisCacheStore: don't pass url if it's nil

In 5.0 it will prevent `$REDIS_URL` from being used.
This commit is contained in:
Jean Boussier 2022-08-19 22:27:47 +02:00
parent adb5028ff8
commit 341d627a57
3 changed files with 10 additions and 6 deletions

@ -1,3 +1,7 @@
* Redis cache store is now compatible with redis-rb 5.0.
*Jean Boussier*
* Log a warning if `ActiveSupport::Cache` is given an expiration in the past.
*Trevor Turk*

@ -84,9 +84,11 @@ def build_redis(redis: nil, url: nil, **redis_options) # :nodoc:
elsif redis
redis
elsif urls.size > 1
build_redis_distributed_client urls: urls, **redis_options
build_redis_distributed_client(urls: urls, **redis_options)
elsif urls.empty?
build_redis_client(**redis_options)
else
build_redis_client url: urls.first, **redis_options
build_redis_client(url: urls.first, **redis_options)
end
end
@ -97,8 +99,8 @@ def build_redis_distributed_client(urls:, **redis_options)
end
end
def build_redis_client(url:, **redis_options)
::Redis.new DEFAULT_REDIS_OPTIONS.merge(redis_options.merge(url: url))
def build_redis_client(**redis_options)
::Redis.new(DEFAULT_REDIS_OPTIONS.merge(redis_options))
end
end

@ -46,7 +46,6 @@ class LookupTest < ActiveSupport::TestCase
class InitializationTest < ActiveSupport::TestCase
test "omitted URL uses Redis client with default settings" do
assert_called_with Redis, :new, [
url: nil,
connect_timeout: 20, read_timeout: 1, write_timeout: 1,
reconnect_attempts: 0
] do
@ -56,7 +55,6 @@ class InitializationTest < ActiveSupport::TestCase
test "no URLs uses Redis client with default settings" do
assert_called_with Redis, :new, [
url: nil,
connect_timeout: 20, read_timeout: 1, write_timeout: 1,
reconnect_attempts: 0
] do