legion-cache 1.3.13 → 1.3.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: bb361d980bfc1761a6ea272c5225a1a1c33389ea8a15f87a1496354fb6f62390
4
- data.tar.gz: f70347db3d1b7c2e849d7b31b3c456c992f776d9db0f16d801d1c0cb824160bb
3
+ metadata.gz: fa8e7d0e05c4dbdf4c720b2d431f88ed5a7efa7dcacb8220791c6b5b6044e468
4
+ data.tar.gz: 74bc4911f37e02ee84ef0236a5aaeb31ce40b868fb153e15b85e81479970114f
5
5
  SHA512:
6
- metadata.gz: 4b96a2ebb1066ace5026f7376e3c6e2788d9a744dd28e675d01e37539b02ad9cad5e18b9dd69172f2986b28742659b205d9e23708b0c1d0885a64149a1e80a4f
7
- data.tar.gz: 4b45f7bc7d8ccca724d41e86899365db9ee08e1357052e70b46620752e0a91916f47372c33d11ae6ab38967c8f3ea028c2f25ee3687a29dfc0560bfb49e84f9b
6
+ metadata.gz: 56c3335ff659f01bc1845a2ca4ce5090e32c2fcfc79b1929d8a6ab42f0c739865d1a8f108d10536010424cfd3bfc804a5640a6ce6329a89eddf3cfaf52bd35bc
7
+ data.tar.gz: 5171886f497a35d5bfdd8cc98af7c2fae9742be0a5dc43ee6b6ccf2163590b85e75903c9b8e1f75d69fa4487e86551c2a587239e7b95b1cf21fb3edad17032f9
data/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # Changelog
2
2
 
3
+ ## [1.3.14] - 2026-03-24
4
+
5
+ ### Added
6
+ - `username`, `password`, `db`, and `reconnect_attempts` options to Redis `client` and `build_redis_client`
7
+ - Corresponding nil/default entries in `Settings.default` and `Settings.local`
8
+
3
9
  ## [1.3.13] - 2026-03-24
4
10
 
5
11
  ### Changed
@@ -11,7 +11,8 @@ module Legion
11
11
  include Legion::Cache::Pool
12
12
  extend self
13
13
 
14
- def client(pool_size: 20, timeout: 5, server: nil, servers: [], cluster: nil, replica: false, fixed_hostname: nil, **) # rubocop:disable Metrics/ParameterLists
14
+ def client(pool_size: 20, timeout: 5, server: nil, servers: [], cluster: nil, replica: false, # rubocop:disable Metrics/ParameterLists
15
+ fixed_hostname: nil, username: nil, password: nil, db: nil, reconnect_attempts: 1, **)
15
16
  return @client unless @client.nil?
16
17
 
17
18
  @pool_size = pool_size
@@ -20,26 +21,34 @@ module Legion
20
21
 
21
22
  @client = ConnectionPool.new(size: pool_size, timeout: timeout) do
22
23
  build_redis_client(server: server, servers: servers, cluster: cluster,
23
- replica: replica, fixed_hostname: fixed_hostname)
24
+ replica: replica, fixed_hostname: fixed_hostname,
25
+ username: username, password: password, db: db,
26
+ reconnect_attempts: reconnect_attempts)
24
27
  end
25
28
  @connected = true
26
29
  Legion::Logging.info "Redis connected to #{resolved_redis_address(server: server, servers: servers, cluster: cluster)}" if defined?(Legion::Logging)
27
30
  @client
28
31
  end
29
32
 
30
- def build_redis_client(server: nil, servers: [], cluster: nil, replica: false, fixed_hostname: nil)
33
+ def build_redis_client(server: nil, servers: [], cluster: nil, replica: false, fixed_hostname: nil, # rubocop:disable Metrics/ParameterLists
34
+ username: nil, password: nil, db: nil, reconnect_attempts: 1)
31
35
  nodes = Array(cluster).compact
32
36
  if nodes.any?
33
- opts = { cluster: nodes }
37
+ opts = { cluster: nodes, reconnect_attempts: reconnect_attempts }
34
38
  opts[:replica] = true if replica
35
39
  opts[:fixed_hostname] = fixed_hostname unless fixed_hostname.nil?
40
+ opts[:username] = username unless username.nil?
41
+ opts[:password] = password unless password.nil?
36
42
  ::Redis.new(**opts)
37
43
  else
38
44
  resolved = Legion::Cache::Settings.resolve_servers(
39
45
  driver: 'redis', server: server, servers: servers
40
46
  )
41
47
  host, port = resolved.first.split(':')
42
- redis_opts = { host: host, port: port.to_i }
48
+ redis_opts = { host: host, port: port.to_i, reconnect_attempts: reconnect_attempts }
49
+ redis_opts[:username] = username unless username.nil?
50
+ redis_opts[:password] = password unless password.nil?
51
+ redis_opts[:db] = db unless db.nil?
43
52
  redis_opts.merge!(redis_tls_options(port: port.to_i))
44
53
  ::Redis.new(**redis_opts)
45
54
  end
@@ -13,40 +13,48 @@ module Legion
13
13
  Legion::Settings.merge_settings(:cache_local, local) if Legion::Settings.method_defined? :merge_settings
14
14
  def self.default
15
15
  {
16
- driver: driver,
17
- servers: resolve_servers(driver: driver),
18
- connected: false,
19
- enabled: true,
20
- namespace: 'legion',
21
- compress: false,
22
- failover: true,
23
- threadsafe: true,
24
- expires_in: 0,
25
- cache_nils: false,
26
- pool_size: 10,
27
- timeout: 5,
28
- serializer: Legion::JSON,
29
- cluster: nil,
30
- replica: false,
31
- fixed_hostname: nil
16
+ driver: driver,
17
+ servers: resolve_servers(driver: driver),
18
+ connected: false,
19
+ enabled: true,
20
+ namespace: 'legion',
21
+ compress: false,
22
+ failover: true,
23
+ threadsafe: true,
24
+ expires_in: 0,
25
+ cache_nils: false,
26
+ pool_size: 10,
27
+ timeout: 5,
28
+ serializer: Legion::JSON,
29
+ cluster: nil,
30
+ replica: false,
31
+ fixed_hostname: nil,
32
+ username: nil,
33
+ password: nil,
34
+ db: nil,
35
+ reconnect_attempts: 1
32
36
  }
33
37
  end
34
38
 
35
39
  def self.local
36
40
  {
37
- driver: driver,
38
- servers: resolve_servers(driver: driver),
39
- connected: false,
40
- enabled: true,
41
- namespace: 'legion_local',
42
- compress: false,
43
- failover: true,
44
- threadsafe: true,
45
- expires_in: 0,
46
- cache_nils: false,
47
- pool_size: 5,
48
- timeout: 3,
49
- serializer: Legion::JSON
41
+ driver: driver,
42
+ servers: resolve_servers(driver: driver),
43
+ connected: false,
44
+ enabled: true,
45
+ namespace: 'legion_local',
46
+ compress: false,
47
+ failover: true,
48
+ threadsafe: true,
49
+ expires_in: 0,
50
+ cache_nils: false,
51
+ pool_size: 5,
52
+ timeout: 3,
53
+ serializer: Legion::JSON,
54
+ username: nil,
55
+ password: nil,
56
+ db: nil,
57
+ reconnect_attempts: 1
50
58
  }
51
59
  end
52
60
 
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Legion
4
4
  module Cache
5
- VERSION = '1.3.13'
5
+ VERSION = '1.3.14'
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: legion-cache
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.13
4
+ version: 1.3.14
5
5
  platform: ruby
6
6
  authors:
7
7
  - Esity