identity_cache 1.6.4 → 1.6.5

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: c1c4e1e77b3c4a778ba9a9b20540aa092a747ab19534cf6b49566bf74f02e5b7
4
- data.tar.gz: 906ac8772c48e590b2dbacb2507319f04a97af51309fa01822461715ec503212
3
+ metadata.gz: e7f8714a727af9c655659c133b31c7b5fbb43ca5e163bf5a18bfa6b55acbc74c
4
+ data.tar.gz: 6cb65683f29a68fde6727146daf1428af90f79fc8360b21dd51fcf291c681137
5
5
  SHA512:
6
- metadata.gz: 1a86b5918fbfa174f8d2d01626de61b7b3cfdef06690f0e4c0440be0e5615a74fd84cab6d7e6c7982dcbdc8811e76db3b7f6344f8e2a15dfad3ade11e2cf7e40
7
- data.tar.gz: 31910c9568c5ead4d8157092933e31d76544e12dfdec5f74c6ac6f24ff9ca41d8bd1587e31e1fee63c0044fadb8ebac104e8854c4d36ceef5dc40b975c4e0f76
6
+ metadata.gz: a00c855035a60e4f270e8c8f56d460049d359ac5d306924fd9b3770a58b8892674bcb036d15f0e0ddd538ef716a4261ea5924cefe4db4e6013662f06b773f2e7
7
+ data.tar.gz: 51a03f9a496bb30a75dc28a97dd6d0f9b17ca7b72ba01f6d9047578fbe1cef8f85705a170482aa177008ed9f4b73e054467b6d5f701a542e787e974081816cba
@@ -18,12 +18,15 @@ jobs:
18
18
  - name: 'Minimum supported'
19
19
  ruby: '3.0'
20
20
  gemfile: "Gemfile.min-supported"
21
- - name: 'Latest released & run rubocop'
21
+ - name: 'Latest Ruby 3'
22
22
  ruby: '3.4'
23
23
  gemfile: "Gemfile.latest-release"
24
+ - name: 'Latest released & run rubocop'
25
+ ruby: '4.0'
26
+ gemfile: "Gemfile.latest-release"
24
27
  rubocop: true
25
28
  - name: 'Rails edge'
26
- ruby: '3.4'
29
+ ruby: '4.0'
27
30
  gemfile: "Gemfile.rails-edge"
28
31
  edge: true
29
32
 
@@ -70,9 +73,9 @@ jobs:
70
73
  sudo apt-get update
71
74
  sudo apt-get -y install libmemcached-dev libmysqlclient-dev libpq-dev libsasl2-dev
72
75
 
73
- - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
76
+ - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
74
77
  - name: Set up Ruby
75
- uses: ruby/setup-ruby@4ff6f3611a42bc75eee1e5138240eb1613f48c8f # v1.266.0
78
+ uses: ruby/setup-ruby@80740b3b13bf9857e28854481ca95a84e78a2bdf # v1.284.0
76
79
  with:
77
80
  ruby-version: ${{ matrix.entry.ruby }}
78
81
  bundler-cache: true
@@ -0,0 +1,26 @@
1
+ name: Release
2
+
3
+ on: workflow_dispatch
4
+
5
+ jobs:
6
+ release:
7
+ permissions:
8
+ contents: write
9
+ id-token: write
10
+
11
+ environment: release
12
+
13
+ runs-on: ubuntu-latest
14
+
15
+ steps:
16
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
17
+ - name: Install required packages
18
+ run: |
19
+ sudo apt-get update
20
+ sudo apt-get -y install libmemcached-dev libmysqlclient-dev libpq-dev libsasl2-dev
21
+ - name: Set up Ruby
22
+ uses: ruby/setup-ruby@95ef2b042f9d7a56d8268cba8559e2842e2ad01b # v1.321.0
23
+ with:
24
+ bundler-cache: true
25
+ ruby-version: 3.4
26
+ - uses: rubygems/release-gem@052cc82692552de3ef2b81fd670e41d13cba8092 # v1.4.0
data/CHANGELOG.md CHANGED
@@ -2,6 +2,10 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## 1.6.5
6
+
7
+ - Improve MemCacheStoreCAS patch to properly pass serialized entries to Dalli.
8
+
5
9
  ## 1.6.4
6
10
 
7
11
  - Patch `run_callbacks` instead of `_run_commit_callbacks` to expire cache prior to `after_commit` callbacks. (#602)
data/Gemfile.lock CHANGED
@@ -8,9 +8,10 @@ GIT
8
8
  PATH
9
9
  remote: .
10
10
  specs:
11
- identity_cache (1.6.4)
11
+ identity_cache (1.6.5)
12
12
  activerecord (>= 7.0)
13
13
  ar_transaction_changes (~> 1.1)
14
+ benchmark
14
15
 
15
16
  GEM
16
17
  remote: https://rubygems.org/
@@ -45,7 +46,9 @@ GEM
45
46
  concurrent-ruby (1.3.5)
46
47
  connection_pool (2.5.3)
47
48
  dalli (3.2.8)
49
+ date (3.5.1)
48
50
  drb (2.2.3)
51
+ erb (6.0.2)
49
52
  i18n (1.14.7)
50
53
  concurrent-ruby (~> 1.0)
51
54
  json (2.13.1)
@@ -54,7 +57,7 @@ GEM
54
57
  memcached_store (2.3.4)
55
58
  activesupport (>= 6)
56
59
  memcached (~> 1.8)
57
- minitest (5.25.5)
60
+ minitest (5.27.0)
58
61
  mocha (2.7.1)
59
62
  ruby2_keywords (>= 0.0.5)
60
63
  mysql2 (0.5.6)
@@ -64,9 +67,16 @@ GEM
64
67
  racc
65
68
  pg (1.5.9)
66
69
  prism (1.4.0)
70
+ psych (5.3.1)
71
+ date
72
+ stringio
67
73
  racc (1.8.1)
68
74
  rainbow (3.1.1)
69
75
  rake (13.3.0)
76
+ rdoc (7.2.0)
77
+ erb
78
+ psych (>= 4.0.0)
79
+ tsort
70
80
  regexp_parser (2.10.0)
71
81
  rexml (3.4.2)
72
82
  rubocop (1.61.0)
@@ -90,15 +100,16 @@ GEM
90
100
  securerandom (0.4.1)
91
101
  spy (1.0.5)
92
102
  stackprof (0.2.27)
103
+ stringio (3.2.0)
93
104
  timeout (0.4.3)
105
+ tsort (0.2.0)
94
106
  tzinfo (2.0.6)
95
107
  concurrent-ruby (~> 1.0)
96
108
  unicode-display_width (2.6.0)
97
- uri (1.0.3)
109
+ uri (1.0.4)
98
110
 
99
111
  PLATFORMS
100
- arm64-darwin-22
101
- arm64-darwin-23
112
+ arm64-darwin
102
113
  x86_64-linux
103
114
 
104
115
  DEPENDENCIES
@@ -113,6 +124,7 @@ DEPENDENCIES
113
124
  mysql2 (~> 0.5.3)
114
125
  pg (>= 0.18, < 2.0)
115
126
  rake (~> 13.0)
127
+ rdoc
116
128
  rubocop (~> 1.61.0)
117
129
  rubocop-shopify (~> 2.9.0)
118
130
  spy (~> 1.0)
@@ -36,9 +36,11 @@ Gem::Specification.new do |gem|
36
36
 
37
37
  gem.add_dependency("activerecord", ">= 7.0")
38
38
  gem.add_dependency("ar_transaction_changes", "~> 1.1")
39
+ gem.add_dependency("benchmark")
39
40
 
40
41
  gem.add_development_dependency("minitest", "~> 5.14")
41
42
  gem.add_development_dependency("mocha", "~> 2.0")
42
43
  gem.add_development_dependency("rake", "~> 13.0")
44
+ gem.add_development_dependency("rdoc")
43
45
  gem.add_development_dependency("spy", "~> 1.0")
44
46
  end
@@ -4,6 +4,8 @@ require "dalli/cas/client" unless Dalli::VERSION > "3"
4
4
 
5
5
  module IdentityCache
6
6
  module MemCacheStoreCAS
7
+ Entry = ActiveSupport::Cache::Entry
8
+
7
9
  def cas(name, options = nil)
8
10
  options = merged_options(options)
9
11
  key = normalize_key(name, options)
@@ -12,10 +14,10 @@ module IdentityCache
12
14
  instrument(:cas, key, options) do
13
15
  @data.with do |connection|
14
16
  connection.cas(key, options[:expires_in].to_i, options) do |raw_value|
15
- entry = deserialize_entry(raw_value, raw: options[:raw])
17
+ entry = deserialize_entry(raw_value, **options)
16
18
  value = yield entry.value
17
- entry = ActiveSupport::Cache::Entry.new(value, **options)
18
- options[:raw] ? entry.value.to_s : entry
19
+ entry = Entry.new(value, **options, version: normalize_version(name, options))
20
+ serialize_entry(entry, **options)
19
21
  end
20
22
  end
21
23
  end
@@ -34,7 +36,7 @@ module IdentityCache
34
36
 
35
37
  values = {}
36
38
  raw_values.each do |key, raw_value|
37
- entry = deserialize_entry(raw_value.first, raw: options[:raw])
39
+ entry = deserialize_entry(raw_value.first, **options)
38
40
  values[keys_to_names[key]] = entry.value unless entry.expired?
39
41
  end
40
42
 
@@ -43,21 +45,12 @@ module IdentityCache
43
45
  updates.each do |name, value|
44
46
  key = normalize_key(name, options)
45
47
  cas_id = raw_values[key].last
46
- entry = ActiveSupport::Cache::Entry.new(value, **options)
47
- payload = options[:raw] ? entry.value.to_s : entry
48
+ entry = Entry.new(value, **options)
49
+ payload = serialize_entry(entry, **options)
48
50
  @data.with { |c| c.replace_cas(key, payload, cas_id, options[:expires_in].to_i, options) }
49
51
  end
50
52
  end
51
53
  end
52
54
  end
53
-
54
- if ActiveSupport::Cache::MemCacheStore.instance_method(:deserialize_entry).arity == 1
55
-
56
- private
57
-
58
- def deserialize_entry(payload, raw: nil)
59
- super(payload)
60
- end
61
- end
62
55
  end
63
56
  end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module IdentityCache
4
- VERSION = "1.6.4"
4
+ VERSION = "1.6.5"
5
5
  CACHE_VERSION = 8
6
6
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: identity_cache
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.6.4
4
+ version: 1.6.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Camilo Lopez
@@ -43,6 +43,20 @@ dependencies:
43
43
  - - "~>"
44
44
  - !ruby/object:Gem::Version
45
45
  version: '1.1'
46
+ - !ruby/object:Gem::Dependency
47
+ name: benchmark
48
+ requirement: !ruby/object:Gem::Requirement
49
+ requirements:
50
+ - - ">="
51
+ - !ruby/object:Gem::Version
52
+ version: '0'
53
+ type: :runtime
54
+ prerelease: false
55
+ version_requirements: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - ">="
58
+ - !ruby/object:Gem::Version
59
+ version: '0'
46
60
  - !ruby/object:Gem::Dependency
47
61
  name: minitest
48
62
  requirement: !ruby/object:Gem::Requirement
@@ -85,6 +99,20 @@ dependencies:
85
99
  - - "~>"
86
100
  - !ruby/object:Gem::Version
87
101
  version: '13.0'
102
+ - !ruby/object:Gem::Dependency
103
+ name: rdoc
104
+ requirement: !ruby/object:Gem::Requirement
105
+ requirements:
106
+ - - ">="
107
+ - !ruby/object:Gem::Version
108
+ version: '0'
109
+ type: :development
110
+ prerelease: false
111
+ version_requirements: !ruby/object:Gem::Requirement
112
+ requirements:
113
+ - - ">="
114
+ - !ruby/object:Gem::Version
115
+ version: '0'
88
116
  - !ruby/object:Gem::Dependency
89
117
  name: spy
90
118
  requirement: !ruby/object:Gem::Requirement
@@ -109,6 +137,7 @@ files:
109
137
  - ".github/dependabot.yml"
110
138
  - ".github/workflows/ci.yml"
111
139
  - ".github/workflows/cla.yml"
140
+ - ".github/workflows/release.yml"
112
141
  - ".gitignore"
113
142
  - ".rubocop.yml"
114
143
  - ".ruby-version"
@@ -190,7 +219,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
190
219
  - !ruby/object:Gem::Version
191
220
  version: '0'
192
221
  requirements: []
193
- rubygems_version: 3.7.2
222
+ rubygems_version: 3.6.9
194
223
  specification_version: 4
195
224
  summary: IdentityCache lets you specify how you want to cache your model objects,
196
225
  at the model level, and adds a number of convenience methods for accessing those