identity_cache 1.1.0 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (56) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yml +5 -4
  3. data/.github/workflows/cla.yml +22 -0
  4. data/.rubocop.yml +7 -3
  5. data/.spin/bootstrap +7 -0
  6. data/.spin/svc.yml +2 -0
  7. data/CHANGELOG.md +10 -0
  8. data/Gemfile +15 -5
  9. data/LICENSE +1 -1
  10. data/README.md +5 -6
  11. data/Rakefile +13 -12
  12. data/dev.yml +2 -4
  13. data/gemfiles/Gemfile.latest-release +12 -7
  14. data/gemfiles/Gemfile.min-supported +11 -6
  15. data/gemfiles/Gemfile.rails-edge +8 -5
  16. data/identity_cache.gemspec +15 -27
  17. data/{railgun.yml → isogun.yml} +0 -5
  18. data/lib/identity_cache/belongs_to_caching.rb +1 -0
  19. data/lib/identity_cache/cache_fetcher.rb +241 -16
  20. data/lib/identity_cache/cache_hash.rb +7 -6
  21. data/lib/identity_cache/cache_invalidation.rb +1 -0
  22. data/lib/identity_cache/cache_key_generation.rb +22 -19
  23. data/lib/identity_cache/cache_key_loader.rb +2 -2
  24. data/lib/identity_cache/cached/association.rb +2 -4
  25. data/lib/identity_cache/cached/attribute.rb +3 -3
  26. data/lib/identity_cache/cached/attribute_by_multi.rb +1 -1
  27. data/lib/identity_cache/cached/belongs_to.rb +3 -0
  28. data/lib/identity_cache/cached/embedded_fetching.rb +2 -0
  29. data/lib/identity_cache/cached/primary_index.rb +3 -2
  30. data/lib/identity_cache/cached/recursive/association.rb +2 -0
  31. data/lib/identity_cache/cached/recursive/has_many.rb +1 -0
  32. data/lib/identity_cache/cached/recursive/has_one.rb +1 -0
  33. data/lib/identity_cache/cached/reference/association.rb +1 -0
  34. data/lib/identity_cache/cached/reference/has_many.rb +1 -0
  35. data/lib/identity_cache/cached/reference/has_one.rb +1 -0
  36. data/lib/identity_cache/cached.rb +1 -0
  37. data/lib/identity_cache/configuration_dsl.rb +1 -0
  38. data/lib/identity_cache/encoder.rb +2 -1
  39. data/lib/identity_cache/expiry_hook.rb +1 -0
  40. data/lib/identity_cache/fallback_fetcher.rb +6 -1
  41. data/lib/identity_cache/mem_cache_store_cas.rb +15 -5
  42. data/lib/identity_cache/memoized_cache_proxy.rb +15 -15
  43. data/lib/identity_cache/parent_model_expiration.rb +3 -1
  44. data/lib/identity_cache/query_api.rb +3 -0
  45. data/lib/identity_cache/railtie.rb +1 -0
  46. data/lib/identity_cache/should_use_cache.rb +1 -0
  47. data/lib/identity_cache/version.rb +2 -1
  48. data/lib/identity_cache/with_primary_index.rb +37 -10
  49. data/lib/identity_cache/without_primary_index.rb +7 -3
  50. data/lib/identity_cache.rb +38 -24
  51. data/performance/cache_runner.rb +12 -9
  52. data/performance/cpu.rb +6 -5
  53. data/performance/externals.rb +6 -5
  54. data/performance/profile.rb +7 -6
  55. metadata +27 -123
  56. data/.github/probots.yml +0 -2
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.1.0
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Camilo Lopez
@@ -14,22 +14,8 @@ authors:
14
14
  autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
- date: 2021-01-08 00:00:00.000000000 Z
17
+ date: 2022-08-15 00:00:00.000000000 Z
18
18
  dependencies:
19
- - !ruby/object:Gem::Dependency
20
- name: ar_transaction_changes
21
- requirement: !ruby/object:Gem::Requirement
22
- requirements:
23
- - - "~>"
24
- - !ruby/object:Gem::Version
25
- version: '1.1'
26
- type: :runtime
27
- prerelease: false
28
- version_requirements: !ruby/object:Gem::Requirement
29
- requirements:
30
- - - "~>"
31
- - !ruby/object:Gem::Version
32
- version: '1.1'
33
19
  - !ruby/object:Gem::Dependency
34
20
  name: activerecord
35
21
  requirement: !ruby/object:Gem::Requirement
@@ -45,159 +31,75 @@ dependencies:
45
31
  - !ruby/object:Gem::Version
46
32
  version: '5.2'
47
33
  - !ruby/object:Gem::Dependency
48
- name: memcached
34
+ name: ar_transaction_changes
49
35
  requirement: !ruby/object:Gem::Requirement
50
36
  requirements:
51
37
  - - "~>"
52
38
  - !ruby/object:Gem::Version
53
- version: 1.8.0
54
- type: :development
39
+ version: '1.1'
40
+ type: :runtime
55
41
  prerelease: false
56
42
  version_requirements: !ruby/object:Gem::Requirement
57
43
  requirements:
58
44
  - - "~>"
59
45
  - !ruby/object:Gem::Version
60
- version: 1.8.0
46
+ version: '1.1'
61
47
  - !ruby/object:Gem::Dependency
62
- name: memcached_store
48
+ name: minitest
63
49
  requirement: !ruby/object:Gem::Requirement
64
50
  requirements:
65
51
  - - "~>"
66
52
  - !ruby/object:Gem::Version
67
- version: 1.0.0
53
+ version: '5.14'
68
54
  type: :development
69
55
  prerelease: false
70
56
  version_requirements: !ruby/object:Gem::Requirement
71
57
  requirements:
72
58
  - - "~>"
73
59
  - !ruby/object:Gem::Version
74
- version: 1.0.0
60
+ version: '5.14'
75
61
  - !ruby/object:Gem::Dependency
76
- name: dalli
62
+ name: mocha
77
63
  requirement: !ruby/object:Gem::Requirement
78
64
  requirements:
79
- - - ">="
65
+ - - "~>"
80
66
  - !ruby/object:Gem::Version
81
- version: '0'
67
+ version: '1.12'
82
68
  type: :development
83
69
  prerelease: false
84
70
  version_requirements: !ruby/object:Gem::Requirement
85
71
  requirements:
86
- - - ">="
72
+ - - "~>"
87
73
  - !ruby/object:Gem::Version
88
- version: '0'
74
+ version: '1.12'
89
75
  - !ruby/object:Gem::Dependency
90
76
  name: rake
91
77
  requirement: !ruby/object:Gem::Requirement
92
78
  requirements:
93
- - - ">="
94
- - !ruby/object:Gem::Version
95
- version: '0'
96
- type: :development
97
- prerelease: false
98
- version_requirements: !ruby/object:Gem::Requirement
99
- requirements:
100
- - - ">="
101
- - !ruby/object:Gem::Version
102
- version: '0'
103
- - !ruby/object:Gem::Dependency
104
- name: mocha
105
- requirement: !ruby/object:Gem::Requirement
106
- requirements:
107
- - - '='
79
+ - - "~>"
108
80
  - !ruby/object:Gem::Version
109
- version: 0.14.0
81
+ version: '13.0'
110
82
  type: :development
111
83
  prerelease: false
112
84
  version_requirements: !ruby/object:Gem::Requirement
113
85
  requirements:
114
- - - '='
86
+ - - "~>"
115
87
  - !ruby/object:Gem::Version
116
- version: 0.14.0
88
+ version: '13.0'
117
89
  - !ruby/object:Gem::Dependency
118
90
  name: spy
119
91
  requirement: !ruby/object:Gem::Requirement
120
92
  requirements:
121
- - - ">="
122
- - !ruby/object:Gem::Version
123
- version: '0'
124
- type: :development
125
- prerelease: false
126
- version_requirements: !ruby/object:Gem::Requirement
127
- requirements:
128
- - - ">="
129
- - !ruby/object:Gem::Version
130
- version: '0'
131
- - !ruby/object:Gem::Dependency
132
- name: minitest
133
- requirement: !ruby/object:Gem::Requirement
134
- requirements:
135
- - - ">="
136
- - !ruby/object:Gem::Version
137
- version: 2.11.0
138
- type: :development
139
- prerelease: false
140
- version_requirements: !ruby/object:Gem::Requirement
141
- requirements:
142
- - - ">="
143
- - !ruby/object:Gem::Version
144
- version: 2.11.0
145
- - !ruby/object:Gem::Dependency
146
- name: cityhash
147
- requirement: !ruby/object:Gem::Requirement
148
- requirements:
149
- - - '='
150
- - !ruby/object:Gem::Version
151
- version: 0.6.0
152
- type: :development
153
- prerelease: false
154
- version_requirements: !ruby/object:Gem::Requirement
155
- requirements:
156
- - - '='
157
- - !ruby/object:Gem::Version
158
- version: 0.6.0
159
- - !ruby/object:Gem::Dependency
160
- name: mysql2
161
- requirement: !ruby/object:Gem::Requirement
162
- requirements:
163
- - - ">="
164
- - !ruby/object:Gem::Version
165
- version: '0'
166
- type: :development
167
- prerelease: false
168
- version_requirements: !ruby/object:Gem::Requirement
169
- requirements:
170
- - - ">="
171
- - !ruby/object:Gem::Version
172
- version: '0'
173
- - !ruby/object:Gem::Dependency
174
- name: pg
175
- requirement: !ruby/object:Gem::Requirement
176
- requirements:
177
- - - ">="
178
- - !ruby/object:Gem::Version
179
- version: '0'
180
- type: :development
181
- prerelease: false
182
- version_requirements: !ruby/object:Gem::Requirement
183
- requirements:
184
- - - ">="
185
- - !ruby/object:Gem::Version
186
- version: '0'
187
- - !ruby/object:Gem::Dependency
188
- name: stackprof
189
- requirement: !ruby/object:Gem::Requirement
190
- requirements:
191
- - - ">="
93
+ - - "~>"
192
94
  - !ruby/object:Gem::Version
193
- version: '0'
95
+ version: '1.0'
194
96
  type: :development
195
97
  prerelease: false
196
98
  version_requirements: !ruby/object:Gem::Requirement
197
99
  requirements:
198
- - - ">="
100
+ - - "~>"
199
101
  - !ruby/object:Gem::Version
200
- version: '0'
102
+ version: '1.0'
201
103
  description: Opt-in read through Active Record caching.
202
104
  email:
203
105
  - gems@shopify.com
@@ -205,10 +107,12 @@ executables: []
205
107
  extensions: []
206
108
  extra_rdoc_files: []
207
109
  files:
208
- - ".github/probots.yml"
209
110
  - ".github/workflows/ci.yml"
111
+ - ".github/workflows/cla.yml"
210
112
  - ".gitignore"
211
113
  - ".rubocop.yml"
114
+ - ".spin/bootstrap"
115
+ - ".spin/svc.yml"
212
116
  - CAVEATS.md
213
117
  - CHANGELOG.md
214
118
  - CONTRIBUTING.md
@@ -221,6 +125,7 @@ files:
221
125
  - gemfiles/Gemfile.min-supported
222
126
  - gemfiles/Gemfile.rails-edge
223
127
  - identity_cache.gemspec
128
+ - isogun.yml
224
129
  - lib/identity_cache.rb
225
130
  - lib/identity_cache/belongs_to_caching.rb
226
131
  - lib/identity_cache/cache_fetcher.rb
@@ -265,7 +170,6 @@ files:
265
170
  - performance/cpu.rb
266
171
  - performance/externals.rb
267
172
  - performance/profile.rb
268
- - railgun.yml
269
173
  - shipit.rubygems.yml
270
174
  homepage: https://github.com/Shopify/identity_cache
271
175
  licenses: []
@@ -286,7 +190,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
286
190
  - !ruby/object:Gem::Version
287
191
  version: '0'
288
192
  requirements: []
289
- rubygems_version: 3.0.3
193
+ rubygems_version: 3.3.3
290
194
  signing_key:
291
195
  specification_version: 4
292
196
  summary: IdentityCache lets you specify how you want to cache your model objects,
data/.github/probots.yml DELETED
@@ -1,2 +0,0 @@
1
- enabled:
2
- - cla