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 +4 -4
- data/.github/workflows/ci.yml +7 -4
- data/.github/workflows/release.yml +26 -0
- data/CHANGELOG.md +4 -0
- data/Gemfile.lock +17 -5
- data/identity_cache.gemspec +2 -0
- data/lib/identity_cache/mem_cache_store_cas.rb +8 -15
- data/lib/identity_cache/version.rb +1 -1
- metadata +31 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: e7f8714a727af9c655659c133b31c7b5fbb43ca5e163bf5a18bfa6b55acbc74c
|
|
4
|
+
data.tar.gz: 6cb65683f29a68fde6727146daf1428af90f79fc8360b21dd51fcf291c681137
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: a00c855035a60e4f270e8c8f56d460049d359ac5d306924fd9b3770a58b8892674bcb036d15f0e0ddd538ef716a4261ea5924cefe4db4e6013662f06b773f2e7
|
|
7
|
+
data.tar.gz: 51a03f9a496bb30a75dc28a97dd6d0f9b17ca7b72ba01f6d9047578fbe1cef8f85705a170482aa177008ed9f4b73e054467b6d5f701a542e787e974081816cba
|
data/.github/workflows/ci.yml
CHANGED
|
@@ -18,12 +18,15 @@ jobs:
|
|
|
18
18
|
- name: 'Minimum supported'
|
|
19
19
|
ruby: '3.0'
|
|
20
20
|
gemfile: "Gemfile.min-supported"
|
|
21
|
-
- name: 'Latest
|
|
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: '
|
|
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@
|
|
76
|
+
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
|
74
77
|
- name: Set up Ruby
|
|
75
|
-
uses: ruby/setup-ruby@
|
|
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
data/Gemfile.lock
CHANGED
|
@@ -8,9 +8,10 @@ GIT
|
|
|
8
8
|
PATH
|
|
9
9
|
remote: .
|
|
10
10
|
specs:
|
|
11
|
-
identity_cache (1.6.
|
|
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.
|
|
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.
|
|
109
|
+
uri (1.0.4)
|
|
98
110
|
|
|
99
111
|
PLATFORMS
|
|
100
|
-
arm64-darwin
|
|
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)
|
data/identity_cache.gemspec
CHANGED
|
@@ -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,
|
|
17
|
+
entry = deserialize_entry(raw_value, **options)
|
|
16
18
|
value = yield entry.value
|
|
17
|
-
entry =
|
|
18
|
-
|
|
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,
|
|
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 =
|
|
47
|
-
payload =
|
|
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
|
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
|
+
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.
|
|
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
|