smart_cache_store 0.2.0 → 0.3.1

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: 3255f6928a9b8e6a102b210749f0b31dea04654f583f4679832019d84f6f490a
4
- data.tar.gz: 03bee6a696eb0cfbcb5a1517818888ea866dc65b33a54a6b7c95cdad7efe2e9c
3
+ metadata.gz: 1880ca4e20a7e99d8a3241e895a9e8405f17faf2e1d28ddede62b8acde1d4c16
4
+ data.tar.gz: 9e7d77179cd5c0b020a583b92256b7900fe886cb054947e4e84eaead557f8833
5
5
  SHA512:
6
- metadata.gz: 3922f820e7b655a38a8ec5e688c8c18fab6a66ae499e9d01edc14fb1f9cb3c5d424456ffb2a0bcf89aaf4e4d1462fe63672baeb800902662ceecc1338853b275
7
- data.tar.gz: 87579ff4140abe65b6f2f402e720f43ffda8137333821410b10ea1aab0ce11e34e55eb3a5802376f3f2238e19b9bce30b7e26072c4a35fa2411df81433a862d9
6
+ metadata.gz: 31630bf7314ebf8b6b065e885e2604b1faa9e50444d7f5aef361260a570e208fb0b412e7f942dc151c5547eb0e3bfd02344ee261b6b3af35af0d8fc43e7792c7
7
+ data.tar.gz: 1e0b2ce48c0c902bcf5ebaab820e0bdc84d482ee6a22c51fcb017b91e8581ed445c12ac0b0b38aca191e28296ef28c641630bafd08a7d97297038fa0e4f8b0d3
data/LICENSE.txt CHANGED
@@ -1,4 +1,4 @@
1
- Copyright 2021-2022 thomas morgan
1
+ Copyright 2021-2023 thomas morgan
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the
data/README.md CHANGED
@@ -11,7 +11,7 @@ Set by default:
11
11
  namespace: ENV['REDIS_NAMESPACE']
12
12
  expires_in: 1.day
13
13
  race_condition_ttl: 5.seconds
14
- pool_size: ENV['RAILS_MAX_THREADS'] || 5
14
+ pool: ENV['RAILS_MAX_THREADS'] || 5
15
15
  connect_timeout: 2
16
16
  read_timeout: 1
17
17
  write_timeout: 1
@@ -31,7 +31,7 @@ Set by default:
31
31
  expires_in: 1.day
32
32
  race_condition_ttl: 5.seconds
33
33
  failover: true
34
- pool_size: ENV['RAILS_MAX_THREADS'] || 5
34
+ pool: ENV['RAILS_MAX_THREADS'] || 5
35
35
 
36
36
  MemCacheStore's legacy initializer with `*addresses` as the first parameter, and the RedisCacheStore compatible `:url` are supported.
37
37
 
@@ -15,9 +15,10 @@ module ActiveSupport
15
15
 
16
16
  # known options:
17
17
  # ActiveSupport::Cache - universal options
18
- # :namespace{nil}, :compress{true}, :compress_threshold{1k}, :expires_in{0}, :race_condition_ttl{0}
18
+ # :namespace{nil}, :compress{true}, :compress_threshold{1k}, :coder, :expires_in{0}
19
+ # :race_condition_ttl{0}, :skip_nil{false}
19
20
  # ActiveSupport::Cache::Store
20
- # :pool_size{5}, :pool_timeout{5}
21
+ # pool: {:size{5}, :timeout{5}}
21
22
  # Dalli::Client
22
23
  # :failover{true}, :serializer{Marshall}, :compressor{zlib}, :cache_nils{false}
23
24
  # :namespace{nil}, :expires_in{0}, :compress{false} (separate from AS::C's same options above)
@@ -28,34 +29,42 @@ module ActiveSupport
28
29
  expires_in: 1.day,
29
30
  race_condition_ttl: 5.seconds,
30
31
  failover: true,
31
- pool_size: ENV.fetch('RAILS_MAX_THREADS'){ 5 }.to_i,
32
32
  )
33
+ if ActiveSupport.version >= '7.1.0.a'
34
+ args[:pool] ||= {}
35
+ args[:pool][:size] ||= Integer(ENV.fetch('RAILS_MAX_THREADS'){ 5 })
36
+ else
37
+ args[:pool_size] ||= Integer(ENV.fetch('RAILS_MAX_THREADS'){ 5 })
38
+ end
33
39
  addresses.push Array(args.delete(:url)) if addresses.empty? && args.key?(:url)
34
40
  super(*addresses, args)
35
41
  end
36
42
 
37
43
 
38
- # MemCacheStore#increment docs say it will init any invalid value to 0.
39
- # In reality, it will only increment a pre-existing, raw value. everything else returns nil or an error.
40
- # This fixes init of missing value on both increment() and decrement().
41
- # Preexisting, invalid values still return errors.
44
+ if ActiveSupport.version < '7.1.0.a'
45
+ # MemCacheStore#increment docs say it will init any invalid value to 0.
46
+ # In reality, it will only increment a pre-existing, raw value. everything else returns nil or an error.
47
+ # This fixes init of missing value on both increment() and decrement().
48
+ # Preexisting, invalid values still return errors.
42
49
 
43
- def increment(name, amount = 1, options = nil)
44
- options = merged_options(options)
45
- instrument(:increment, name, amount: amount) do
46
- rescue_error_with nil do
47
- @data.then { |c| c.incr(normalize_key(name, options), amount, options[:expires_in], amount) }
50
+ def increment(name, amount = 1, options = nil)
51
+ options = merged_options(options)
52
+ instrument(:increment, name, amount: amount) do
53
+ rescue_error_with nil do
54
+ @data.then { |c| c.incr(normalize_key(name, options), amount, options[:expires_in], amount) }
55
+ end
48
56
  end
49
57
  end
50
- end
51
58
 
52
- def decrement(name, amount = 1, options = nil)
53
- options = merged_options(options)
54
- instrument(:decrement, name, amount: amount) do
55
- rescue_error_with nil do
56
- @data.then { |c| c.decr(normalize_key(name, options), amount, options[:expires_in], 0) }
59
+ def decrement(name, amount = 1, options = nil)
60
+ options = merged_options(options)
61
+ instrument(:decrement, name, amount: amount) do
62
+ rescue_error_with nil do
63
+ @data.then { |c| c.decr(normalize_key(name, options), amount, options[:expires_in], 0) }
64
+ end
57
65
  end
58
66
  end
67
+
59
68
  end
60
69
 
61
70
  end
@@ -13,26 +13,34 @@ module ActiveSupport
13
13
 
14
14
  # known options:
15
15
  # ActiveSupport::Cache - universal options
16
- # :namespace{nil}, :compress{true}, :compress_threshold{1k}, :expires_in{0}, :race_condition_ttl{0}
16
+ # :namespace{nil}, :compress{true}, :compress_threshold{1k}, :coder, :expires_in{0}
17
+ # :race_condition_ttl{0}, :skip_nil{false}
17
18
  # ActiveSupport::Cache::Store
18
- # :pool_size{5}, :pool_timeout{5}
19
+ # pool: {:size{5}, :timeout{5}}
20
+ # ActiveSupport::Cache::RedisCacheStore
21
+ # :error_handler
19
22
  # Redis
20
23
  # :host, :port, :db, :username, :password, :url, :path
21
24
  # ssl_params: {:ca_file, :cert, :key}
22
25
  # :sentinels, :role
23
- # :cluster, :replica
26
+ # :replica
24
27
  # :timeout (sets next 3), :connect_timeout, :read_timeout, :write_timeout
25
- # :reconnect_attempts, :reconnect_delay, :reconnect_delay_max
28
+ # :reconnect_attempts
26
29
  def initialize(**args)
27
30
  args.reverse_merge!(
28
31
  namespace: ENV['REDIS_NAMESPACE'],
29
32
  expires_in: 1.day,
30
33
  race_condition_ttl: 5.seconds,
31
- pool_size: ENV.fetch('RAILS_MAX_THREADS'){ 5 }.to_i,
32
34
  connect_timeout: 2,
33
35
  read_timeout: 1,
34
36
  write_timeout: 1,
35
37
  )
38
+ if ActiveSupport.version >= '7.1.0.a'
39
+ args[:pool] ||= {}
40
+ args[:pool][:size] ||= Integer(ENV.fetch('RAILS_MAX_THREADS'){ 5 })
41
+ else
42
+ args[:pool_size] ||= Integer(ENV.fetch('RAILS_MAX_THREADS'){ 5 })
43
+ end
36
44
  if Redis::VERSION >= '5'
37
45
  args.reverse_merge!(
38
46
  # when an array, contains delay for each reconnect attempt
@@ -1,3 +1,3 @@
1
1
  module SmartCacheStore
2
- VERSION = '0.2.0'
2
+ VERSION = '0.3.1'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: smart_cache_store
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - thomas morgan
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-12-06 00:00:00.000000000 Z
11
+ date: 2023-06-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -75,7 +75,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
75
75
  - !ruby/object:Gem::Version
76
76
  version: '0'
77
77
  requirements: []
78
- rubygems_version: 3.2.33
78
+ rubygems_version: 3.4.10
79
79
  signing_key:
80
80
  specification_version: 4
81
81
  summary: Production-ready enhancements for mem_cache_store and redis_cache_store