identity_cache 1.0.0 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (61) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yml +76 -9
  3. data/.github/workflows/cla.yml +22 -0
  4. data/.gitignore +1 -0
  5. data/.rubocop.yml +7 -3
  6. data/.spin/bootstrap +7 -0
  7. data/.spin/svc.yml +2 -0
  8. data/CAVEATS.md +25 -0
  9. data/CHANGELOG.md +56 -22
  10. data/Gemfile +15 -5
  11. data/LICENSE +1 -1
  12. data/README.md +27 -8
  13. data/Rakefile +13 -12
  14. data/dev.yml +5 -4
  15. data/gemfiles/Gemfile.latest-release +12 -5
  16. data/gemfiles/Gemfile.min-supported +12 -0
  17. data/gemfiles/Gemfile.rails-edge +9 -5
  18. data/identity_cache.gemspec +15 -24
  19. data/{railgun.yml → isogun.yml} +0 -5
  20. data/lib/identity_cache/belongs_to_caching.rb +1 -0
  21. data/lib/identity_cache/cache_fetcher.rb +241 -16
  22. data/lib/identity_cache/cache_hash.rb +7 -6
  23. data/lib/identity_cache/cache_invalidation.rb +2 -1
  24. data/lib/identity_cache/cache_key_generation.rb +22 -19
  25. data/lib/identity_cache/cache_key_loader.rb +2 -2
  26. data/lib/identity_cache/cached/association.rb +2 -4
  27. data/lib/identity_cache/cached/attribute.rb +3 -3
  28. data/lib/identity_cache/cached/attribute_by_multi.rb +1 -1
  29. data/lib/identity_cache/cached/belongs_to.rb +24 -14
  30. data/lib/identity_cache/cached/embedded_fetching.rb +2 -0
  31. data/lib/identity_cache/cached/prefetcher.rb +12 -2
  32. data/lib/identity_cache/cached/primary_index.rb +3 -3
  33. data/lib/identity_cache/cached/recursive/association.rb +55 -12
  34. data/lib/identity_cache/cached/recursive/has_many.rb +1 -0
  35. data/lib/identity_cache/cached/recursive/has_one.rb +1 -0
  36. data/lib/identity_cache/cached/reference/association.rb +1 -0
  37. data/lib/identity_cache/cached/reference/has_many.rb +3 -2
  38. data/lib/identity_cache/cached/reference/has_one.rb +3 -2
  39. data/lib/identity_cache/cached.rb +1 -0
  40. data/lib/identity_cache/configuration_dsl.rb +1 -0
  41. data/lib/identity_cache/encoder.rb +2 -1
  42. data/lib/identity_cache/expiry_hook.rb +2 -1
  43. data/lib/identity_cache/fallback_fetcher.rb +6 -1
  44. data/lib/identity_cache/mem_cache_store_cas.rb +63 -0
  45. data/lib/identity_cache/memoized_cache_proxy.rb +33 -23
  46. data/lib/identity_cache/parent_model_expiration.rb +6 -3
  47. data/lib/identity_cache/query_api.rb +29 -66
  48. data/lib/identity_cache/railtie.rb +1 -0
  49. data/lib/identity_cache/should_use_cache.rb +1 -0
  50. data/lib/identity_cache/version.rb +2 -1
  51. data/lib/identity_cache/with_primary_index.rb +37 -10
  52. data/lib/identity_cache/without_primary_index.rb +7 -3
  53. data/lib/identity_cache.rb +66 -26
  54. data/performance/cache_runner.rb +12 -51
  55. data/performance/cpu.rb +7 -6
  56. data/performance/externals.rb +6 -5
  57. data/performance/profile.rb +7 -6
  58. metadata +32 -112
  59. data/.github/probots.yml +0 -2
  60. data/.travis.yml +0 -45
  61. data/gemfiles/Gemfile.rails52 +0 -6
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.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: 2020-02-13 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.0'
26
- type: :runtime
27
- prerelease: false
28
- version_requirements: !ruby/object:Gem::Requirement
29
- requirements:
30
- - - "~>"
31
- - !ruby/object:Gem::Version
32
- version: '1.0'
33
19
  - !ruby/object:Gem::Dependency
34
20
  name: activerecord
35
21
  requirement: !ruby/object:Gem::Requirement
@@ -45,145 +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
75
- - !ruby/object:Gem::Dependency
76
- name: rake
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'
60
+ version: '5.14'
89
61
  - !ruby/object:Gem::Dependency
90
62
  name: mocha
91
63
  requirement: !ruby/object:Gem::Requirement
92
64
  requirements:
93
- - - '='
94
- - !ruby/object:Gem::Version
95
- version: 0.14.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.14.0
103
- - !ruby/object:Gem::Dependency
104
- name: spy
105
- requirement: !ruby/object:Gem::Requirement
106
- requirements:
107
- - - ">="
108
- - !ruby/object:Gem::Version
109
- version: '0'
110
- type: :development
111
- prerelease: false
112
- version_requirements: !ruby/object:Gem::Requirement
113
- requirements:
114
- - - ">="
115
- - !ruby/object:Gem::Version
116
- version: '0'
117
- - !ruby/object:Gem::Dependency
118
- name: minitest
119
- requirement: !ruby/object:Gem::Requirement
120
- requirements:
121
- - - ">="
122
- - !ruby/object:Gem::Version
123
- version: 2.11.0
124
- type: :development
125
- prerelease: false
126
- version_requirements: !ruby/object:Gem::Requirement
127
- requirements:
128
- - - ">="
129
- - !ruby/object:Gem::Version
130
- version: 2.11.0
131
- - !ruby/object:Gem::Dependency
132
- name: cityhash
133
- requirement: !ruby/object:Gem::Requirement
134
- requirements:
135
- - - '='
136
- - !ruby/object:Gem::Version
137
- version: 0.6.0
138
- type: :development
139
- prerelease: false
140
- version_requirements: !ruby/object:Gem::Requirement
141
- requirements:
142
- - - '='
143
- - !ruby/object:Gem::Version
144
- version: 0.6.0
145
- - !ruby/object:Gem::Dependency
146
- name: mysql2
147
- requirement: !ruby/object:Gem::Requirement
148
- requirements:
149
- - - ">="
65
+ - - "~>"
150
66
  - !ruby/object:Gem::Version
151
- version: '0'
67
+ version: '1.12'
152
68
  type: :development
153
69
  prerelease: false
154
70
  version_requirements: !ruby/object:Gem::Requirement
155
71
  requirements:
156
- - - ">="
72
+ - - "~>"
157
73
  - !ruby/object:Gem::Version
158
- version: '0'
74
+ version: '1.12'
159
75
  - !ruby/object:Gem::Dependency
160
- name: pg
76
+ name: rake
161
77
  requirement: !ruby/object:Gem::Requirement
162
78
  requirements:
163
79
  - - "~>"
164
80
  - !ruby/object:Gem::Version
165
- version: '0.18'
81
+ version: '13.0'
166
82
  type: :development
167
83
  prerelease: false
168
84
  version_requirements: !ruby/object:Gem::Requirement
169
85
  requirements:
170
86
  - - "~>"
171
87
  - !ruby/object:Gem::Version
172
- version: '0.18'
88
+ version: '13.0'
173
89
  - !ruby/object:Gem::Dependency
174
- name: stackprof
90
+ name: spy
175
91
  requirement: !ruby/object:Gem::Requirement
176
92
  requirements:
177
- - - ">="
93
+ - - "~>"
178
94
  - !ruby/object:Gem::Version
179
- version: '0'
95
+ version: '1.0'
180
96
  type: :development
181
97
  prerelease: false
182
98
  version_requirements: !ruby/object:Gem::Requirement
183
99
  requirements:
184
- - - ">="
100
+ - - "~>"
185
101
  - !ruby/object:Gem::Version
186
- version: '0'
102
+ version: '1.0'
187
103
  description: Opt-in read through Active Record caching.
188
104
  email:
189
105
  - gems@shopify.com
@@ -191,11 +107,13 @@ executables: []
191
107
  extensions: []
192
108
  extra_rdoc_files: []
193
109
  files:
194
- - ".github/probots.yml"
195
110
  - ".github/workflows/ci.yml"
111
+ - ".github/workflows/cla.yml"
196
112
  - ".gitignore"
197
113
  - ".rubocop.yml"
198
- - ".travis.yml"
114
+ - ".spin/bootstrap"
115
+ - ".spin/svc.yml"
116
+ - CAVEATS.md
199
117
  - CHANGELOG.md
200
118
  - CONTRIBUTING.md
201
119
  - Gemfile
@@ -204,9 +122,10 @@ files:
204
122
  - Rakefile
205
123
  - dev.yml
206
124
  - gemfiles/Gemfile.latest-release
125
+ - gemfiles/Gemfile.min-supported
207
126
  - gemfiles/Gemfile.rails-edge
208
- - gemfiles/Gemfile.rails52
209
127
  - identity_cache.gemspec
128
+ - isogun.yml
210
129
  - lib/identity_cache.rb
211
130
  - lib/identity_cache/belongs_to_caching.rb
212
131
  - lib/identity_cache/cache_fetcher.rb
@@ -237,6 +156,7 @@ files:
237
156
  - lib/identity_cache/load_strategy/lazy.rb
238
157
  - lib/identity_cache/load_strategy/load_request.rb
239
158
  - lib/identity_cache/load_strategy/multi_load_request.rb
159
+ - lib/identity_cache/mem_cache_store_cas.rb
240
160
  - lib/identity_cache/memoized_cache_proxy.rb
241
161
  - lib/identity_cache/parent_model_expiration.rb
242
162
  - lib/identity_cache/query_api.rb
@@ -250,11 +170,11 @@ files:
250
170
  - performance/cpu.rb
251
171
  - performance/externals.rb
252
172
  - performance/profile.rb
253
- - railgun.yml
254
173
  - shipit.rubygems.yml
255
174
  homepage: https://github.com/Shopify/identity_cache
256
175
  licenses: []
257
- metadata: {}
176
+ metadata:
177
+ allowed_push_host: https://rubygems.org
258
178
  post_install_message:
259
179
  rdoc_options: []
260
180
  require_paths:
@@ -263,14 +183,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
263
183
  requirements:
264
184
  - - ">="
265
185
  - !ruby/object:Gem::Version
266
- version: 2.4.0
186
+ version: 2.5.0
267
187
  required_rubygems_version: !ruby/object:Gem::Requirement
268
188
  requirements:
269
189
  - - ">="
270
190
  - !ruby/object:Gem::Version
271
191
  version: '0'
272
192
  requirements: []
273
- rubygems_version: 3.0.3
193
+ rubygems_version: 3.3.3
274
194
  signing_key:
275
195
  specification_version: 4
276
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
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
@@ -1,6 +0,0 @@
1
- source 'https://rubygems.org'
2
- gemspec path: '..'
3
-
4
- gem 'activerecord', '~> 5.2'
5
- gem 'activesupport', '~> 5.2'
6
- gem 'mysql2', '>= 0.4.4', '< 0.6.0'