identity_cache 1.5.3 → 1.5.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: def26128f16258d40ae0aab05bff51da07f3e6290d7742562a968cb061b4e4fa
4
- data.tar.gz: 5422730f52bed62f919d697c393fc2ead2de6b59edff35f6f6d02f032322c0a9
3
+ metadata.gz: 43aca383629f04c700149023fc492f57bd999c1a6ff46b48284d63860921bd19
4
+ data.tar.gz: 4c83589f1f2ce435af22b232178983183bb70c3ec0bd4d02e52b955267e4f9c5
5
5
  SHA512:
6
- metadata.gz: 373cb5c7745fa34fd3b512a34ef8646fe3405082f2c174bdc23538827e024180a0275717a9ca7b3c82dd4dbb8ef1847d107a65ccecc5cb253a8608ab68507a60
7
- data.tar.gz: d7764abbbeaee3b3d48f04d1c9ff2309a18a7eb7fbc3b4a5a2e868a3444ff8e9e2d81776a6f0e9d2d68814fa938de7dce35ab65c8538d7ac313f05bc86f28381
6
+ metadata.gz: a408644ef8964d9858fa67186f683310189323255e07a11af0b6d98719ca6ebd0743197c6a913b7545103c86630aba3bacbed993cd1d34e54488953206da4173
7
+ data.tar.gz: 1dd4579508796c4891f86d4f2f088a4c59ac02bbcf9b0d79a8363c57f71e327e5a4962b232b300c6713101e035efbcbb93d5b0d426f96ad54b05735a36cf4a37
data/CHANGELOG.md CHANGED
@@ -2,6 +2,10 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## 1.5.4
6
+
7
+ - Make `prefetch_associations` work as expected on associations that have been partially prefetched
8
+
5
9
  ## 1.5.3
6
10
 
7
11
  - No longer call `should_use_cache?` on embedded/prefetched associations when reading values
@@ -14,7 +14,7 @@ module IdentityCache
14
14
  ensure_base_model
15
15
 
16
16
  unless (reflection = reflect_on_association(association))
17
- raise AssociationError, "Association named '#{association}' was not found on #{self.class}"
17
+ raise AssociationError, "Association named '#{association}' was not found on #{self}"
18
18
  end
19
19
 
20
20
  if reflection.scope
@@ -77,16 +77,20 @@ module IdentityCache
77
77
  end
78
78
  end
79
79
 
80
- load_strategy.load_multi(
81
- reflection.klass.cached_primary_index,
82
- ids_to_owner_record.keys
83
- ) do |associated_records_by_id|
84
- associated_records_by_id.each do |id, associated_record|
85
- owner_record = ids_to_owner_record.fetch(id)
86
- write(owner_record, associated_record)
87
- end
80
+ if ids_to_owner_record.any?
81
+ load_strategy.load_multi(
82
+ reflection.klass.cached_primary_index,
83
+ ids_to_owner_record.keys
84
+ ) do |associated_records_by_id|
85
+ associated_records_by_id.each do |id, associated_record|
86
+ owner_record = ids_to_owner_record.fetch(id)
87
+ write(owner_record, associated_record)
88
+ end
88
89
 
89
- yield associated_records_by_id.values.compact
90
+ yield associated_records_by_id.values.compact
91
+ end
92
+ else
93
+ yield records.filter_map { |record| record.instance_variable_get(records_variable_name) }
90
94
  end
91
95
  end
92
96
  end
@@ -143,7 +143,7 @@ module IdentityCache
143
143
 
144
144
  def check_association_for_caching(association)
145
145
  unless (association_reflection = reflect_on_association(association))
146
- raise AssociationError, "Association named '#{association}' was not found on #{self.class}"
146
+ raise AssociationError, "Association named '#{association}' was not found on #{self}"
147
147
  end
148
148
  if association_reflection.options[:through]
149
149
  raise UnsupportedAssociationError, "caching through associations isn't supported"
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module IdentityCache
4
- VERSION = "1.5.3"
4
+ VERSION = "1.5.5"
5
5
  CACHE_VERSION = 8
6
6
  end
@@ -151,6 +151,8 @@ module IdentityCache
151
151
  ensure_base_model
152
152
  raise_if_scoped
153
153
  ids.flatten!(1)
154
+ return [] if ids.none?
155
+
154
156
  records = cached_primary_index.fetch_multi(ids)
155
157
  prefetch_associations(includes, records) if includes
156
158
  records
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.5.3
4
+ version: 1.5.5
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: 2024-01-22 00:00:00.000000000 Z
17
+ date: 2024-02-27 00:00:00.000000000 Z
18
18
  dependencies:
19
19
  - !ruby/object:Gem::Dependency
20
20
  name: activerecord
@@ -190,7 +190,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
190
190
  - !ruby/object:Gem::Version
191
191
  version: '0'
192
192
  requirements: []
193
- rubygems_version: 3.5.4
193
+ rubygems_version: 3.5.6
194
194
  signing_key:
195
195
  specification_version: 4
196
196
  summary: IdentityCache lets you specify how you want to cache your model objects,