identity_cache 1.0.1 → 1.1.0
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 +75 -9
- data/.gitignore +1 -0
- data/.rubocop.yml +1 -1
- data/CAVEATS.md +25 -0
- data/CHANGELOG.md +43 -23
- data/Gemfile +2 -2
- data/LICENSE +1 -1
- data/README.md +25 -5
- data/dev.yml +4 -1
- data/gemfiles/Gemfile.latest-release +2 -0
- data/gemfiles/Gemfile.min-supported +7 -0
- data/gemfiles/Gemfile.rails-edge +1 -0
- data/identity_cache.gemspec +6 -3
- data/lib/identity_cache.rb +30 -4
- data/lib/identity_cache/cache_invalidation.rb +1 -1
- data/lib/identity_cache/cache_key_generation.rb +1 -1
- data/lib/identity_cache/cached/belongs_to.rb +21 -14
- data/lib/identity_cache/cached/prefetcher.rb +12 -2
- data/lib/identity_cache/cached/primary_index.rb +0 -1
- data/lib/identity_cache/cached/recursive/association.rb +53 -12
- data/lib/identity_cache/cached/reference/has_many.rb +2 -2
- data/lib/identity_cache/cached/reference/has_one.rb +2 -2
- data/lib/identity_cache/mem_cache_store_cas.rb +53 -0
- data/lib/identity_cache/memoized_cache_proxy.rb +19 -9
- data/lib/identity_cache/parent_model_expiration.rb +3 -2
- data/lib/identity_cache/query_api.rb +26 -66
- data/lib/identity_cache/version.rb +1 -1
- data/performance/cache_runner.rb +0 -42
- data/performance/cpu.rb +1 -1
- metadata +28 -12
- data/.travis.yml +0 -45
- data/gemfiles/Gemfile.rails52 +0 -6
data/performance/cache_runner.rb
CHANGED
@@ -107,28 +107,6 @@ module DeletedRunner
|
|
107
107
|
end
|
108
108
|
end
|
109
109
|
|
110
|
-
module ConflictRunner
|
111
|
-
def prepare
|
112
|
-
super
|
113
|
-
records = (1..@count).map { |id| ::Item.find(id) }
|
114
|
-
orig_resolve_cache_miss = ::Item.method(:resolve_cache_miss)
|
115
|
-
|
116
|
-
::Item.define_singleton_method(:resolve_cache_miss) do |id|
|
117
|
-
records[id - 1].expire_cache
|
118
|
-
orig_resolve_cache_miss.call(id)
|
119
|
-
end
|
120
|
-
IdentityCache.cache.clear
|
121
|
-
end
|
122
|
-
end
|
123
|
-
|
124
|
-
module DeletedConflictRunner
|
125
|
-
include ConflictRunner
|
126
|
-
def prepare
|
127
|
-
super
|
128
|
-
(1..@count).each { |i| ::Item.find(i).expire_cache }
|
129
|
-
end
|
130
|
-
end
|
131
|
-
|
132
110
|
class EmbedRunner < CacheRunner
|
133
111
|
def setup_models
|
134
112
|
super
|
@@ -161,16 +139,6 @@ class FetchEmbedDeletedRunner < EmbedRunner
|
|
161
139
|
end
|
162
140
|
CACHE_RUNNERS << FetchEmbedDeletedRunner
|
163
141
|
|
164
|
-
class FetchEmbedConflictRunner < EmbedRunner
|
165
|
-
include ConflictRunner
|
166
|
-
end
|
167
|
-
CACHE_RUNNERS << FetchEmbedConflictRunner
|
168
|
-
|
169
|
-
class FetchEmbedDeletedConflictRunner < EmbedRunner
|
170
|
-
include DeletedConflictRunner
|
171
|
-
end
|
172
|
-
CACHE_RUNNERS << FetchEmbedDeletedConflictRunner
|
173
|
-
|
174
142
|
class NormalizedRunner < CacheRunner
|
175
143
|
def setup_models
|
176
144
|
super
|
@@ -204,13 +172,3 @@ class FetchNormalizedDeletedRunner < NormalizedRunner
|
|
204
172
|
include DeletedRunner
|
205
173
|
end
|
206
174
|
CACHE_RUNNERS << FetchNormalizedDeletedRunner
|
207
|
-
|
208
|
-
class FetchNormalizedConflictRunner < EmbedRunner
|
209
|
-
include ConflictRunner
|
210
|
-
end
|
211
|
-
CACHE_RUNNERS << FetchNormalizedConflictRunner
|
212
|
-
|
213
|
-
class FetchNormalizedDeletedConflictRunner < EmbedRunner
|
214
|
-
include DeletedConflictRunner
|
215
|
-
end
|
216
|
-
CACHE_RUNNERS << FetchNormalizedDeletedConflictRunner
|
data/performance/cpu.rb
CHANGED
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.0
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Camilo Lopez
|
@@ -14,7 +14,7 @@ authors:
|
|
14
14
|
autorequire:
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
|
-
date:
|
17
|
+
date: 2021-01-08 00:00:00.000000000 Z
|
18
18
|
dependencies:
|
19
19
|
- !ruby/object:Gem::Dependency
|
20
20
|
name: ar_transaction_changes
|
@@ -22,14 +22,14 @@ dependencies:
|
|
22
22
|
requirements:
|
23
23
|
- - "~>"
|
24
24
|
- !ruby/object:Gem::Version
|
25
|
-
version: '1.
|
25
|
+
version: '1.1'
|
26
26
|
type: :runtime
|
27
27
|
prerelease: false
|
28
28
|
version_requirements: !ruby/object:Gem::Requirement
|
29
29
|
requirements:
|
30
30
|
- - "~>"
|
31
31
|
- !ruby/object:Gem::Version
|
32
|
-
version: '1.
|
32
|
+
version: '1.1'
|
33
33
|
- !ruby/object:Gem::Dependency
|
34
34
|
name: activerecord
|
35
35
|
requirement: !ruby/object:Gem::Requirement
|
@@ -72,6 +72,20 @@ dependencies:
|
|
72
72
|
- - "~>"
|
73
73
|
- !ruby/object:Gem::Version
|
74
74
|
version: 1.0.0
|
75
|
+
- !ruby/object:Gem::Dependency
|
76
|
+
name: dalli
|
77
|
+
requirement: !ruby/object:Gem::Requirement
|
78
|
+
requirements:
|
79
|
+
- - ">="
|
80
|
+
- !ruby/object:Gem::Version
|
81
|
+
version: '0'
|
82
|
+
type: :development
|
83
|
+
prerelease: false
|
84
|
+
version_requirements: !ruby/object:Gem::Requirement
|
85
|
+
requirements:
|
86
|
+
- - ">="
|
87
|
+
- !ruby/object:Gem::Version
|
88
|
+
version: '0'
|
75
89
|
- !ruby/object:Gem::Dependency
|
76
90
|
name: rake
|
77
91
|
requirement: !ruby/object:Gem::Requirement
|
@@ -160,16 +174,16 @@ dependencies:
|
|
160
174
|
name: pg
|
161
175
|
requirement: !ruby/object:Gem::Requirement
|
162
176
|
requirements:
|
163
|
-
- - "
|
177
|
+
- - ">="
|
164
178
|
- !ruby/object:Gem::Version
|
165
|
-
version: '0
|
179
|
+
version: '0'
|
166
180
|
type: :development
|
167
181
|
prerelease: false
|
168
182
|
version_requirements: !ruby/object:Gem::Requirement
|
169
183
|
requirements:
|
170
|
-
- - "
|
184
|
+
- - ">="
|
171
185
|
- !ruby/object:Gem::Version
|
172
|
-
version: '0
|
186
|
+
version: '0'
|
173
187
|
- !ruby/object:Gem::Dependency
|
174
188
|
name: stackprof
|
175
189
|
requirement: !ruby/object:Gem::Requirement
|
@@ -195,7 +209,7 @@ files:
|
|
195
209
|
- ".github/workflows/ci.yml"
|
196
210
|
- ".gitignore"
|
197
211
|
- ".rubocop.yml"
|
198
|
-
-
|
212
|
+
- CAVEATS.md
|
199
213
|
- CHANGELOG.md
|
200
214
|
- CONTRIBUTING.md
|
201
215
|
- Gemfile
|
@@ -204,8 +218,8 @@ files:
|
|
204
218
|
- Rakefile
|
205
219
|
- dev.yml
|
206
220
|
- gemfiles/Gemfile.latest-release
|
221
|
+
- gemfiles/Gemfile.min-supported
|
207
222
|
- gemfiles/Gemfile.rails-edge
|
208
|
-
- gemfiles/Gemfile.rails52
|
209
223
|
- identity_cache.gemspec
|
210
224
|
- lib/identity_cache.rb
|
211
225
|
- lib/identity_cache/belongs_to_caching.rb
|
@@ -237,6 +251,7 @@ files:
|
|
237
251
|
- lib/identity_cache/load_strategy/lazy.rb
|
238
252
|
- lib/identity_cache/load_strategy/load_request.rb
|
239
253
|
- lib/identity_cache/load_strategy/multi_load_request.rb
|
254
|
+
- lib/identity_cache/mem_cache_store_cas.rb
|
240
255
|
- lib/identity_cache/memoized_cache_proxy.rb
|
241
256
|
- lib/identity_cache/parent_model_expiration.rb
|
242
257
|
- lib/identity_cache/query_api.rb
|
@@ -254,7 +269,8 @@ files:
|
|
254
269
|
- shipit.rubygems.yml
|
255
270
|
homepage: https://github.com/Shopify/identity_cache
|
256
271
|
licenses: []
|
257
|
-
metadata:
|
272
|
+
metadata:
|
273
|
+
allowed_push_host: https://rubygems.org
|
258
274
|
post_install_message:
|
259
275
|
rdoc_options: []
|
260
276
|
require_paths:
|
@@ -263,7 +279,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
263
279
|
requirements:
|
264
280
|
- - ">="
|
265
281
|
- !ruby/object:Gem::Version
|
266
|
-
version: 2.
|
282
|
+
version: 2.5.0
|
267
283
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
268
284
|
requirements:
|
269
285
|
- - ">="
|
data/.travis.yml
DELETED
@@ -1,45 +0,0 @@
|
|
1
|
-
language: ruby
|
2
|
-
|
3
|
-
rvm:
|
4
|
-
- 2.4
|
5
|
-
- 2.6
|
6
|
-
|
7
|
-
gemfile:
|
8
|
-
- gemfiles/Gemfile.rails52
|
9
|
-
- gemfiles/Gemfile.latest-release
|
10
|
-
- gemfiles/Gemfile.rails-edge
|
11
|
-
|
12
|
-
env:
|
13
|
-
- DB=mysql2
|
14
|
-
- DB=postgresql
|
15
|
-
|
16
|
-
jobs:
|
17
|
-
exclude:
|
18
|
-
- rvm: 2.4
|
19
|
-
gemfile: gemfiles/Gemfile.rails-edge
|
20
|
-
- rvm: 2.4
|
21
|
-
gemfile: gemfiles/Gemfile.latest-release
|
22
|
-
|
23
|
-
services:
|
24
|
-
- memcache
|
25
|
-
- mysql
|
26
|
-
- postgresql
|
27
|
-
|
28
|
-
sudo: false
|
29
|
-
|
30
|
-
before_script:
|
31
|
-
- mysql -e 'create database identity_cache_test'
|
32
|
-
- psql -c 'create database identity_cache_test;' -U postgres
|
33
|
-
|
34
|
-
script:
|
35
|
-
- bundle exec rake test
|
36
|
-
|
37
|
-
cache: bundler
|
38
|
-
|
39
|
-
matrix:
|
40
|
-
exclude:
|
41
|
-
- rvm: 2.2.6
|
42
|
-
gemfile: gemfiles/Gemfile.rails-edge
|
43
|
-
|
44
|
-
notifications:
|
45
|
-
email: false
|