goldiloader 5.1.0 → 5.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4b14210a0559e4703e779410d7381cd84f4e25d808107ea4558bff158320ad66
4
- data.tar.gz: 74bd3fc10220916fe12e8394731f0e4846ae157bd24922ca434f83800ee56cfc
3
+ metadata.gz: 3e2c97d263d32b7fb6d2f2e9486f780c835ea50d63746983fb0eb6c39322b9db
4
+ data.tar.gz: 1b9e51a04b471e59b5e8900c14518c392d1d87e7530ec421cca53603d9df6939
5
5
  SHA512:
6
- metadata.gz: b8c6f697034dab771dec9391aba56c647631f96f942165adae988803f74c59a7dca7515360349d0193f0d66a60f8fc9d19da1288613562de8b13b6f23b329961
7
- data.tar.gz: ed6feff242aedac8add87e36d0863f34e3d6dcc00405f0a98dc6cb803b3d75451f228839e2cff251b5d9a58d0fa1b019e55f73d5d2689f957e11a4d517843389
6
+ metadata.gz: 8ef1fc2b11be83c5f7557bf4ed7b30aa7b3eb1ecd71e710558b21591ce05bda8a09d51cc2ef1c2026817bd20bccbe6ede8c9a7636eda07b6945acb814b6cacdc
7
+ data.tar.gz: db3bf812806fad8e6c6d2c2afdbb2be6883e524a81a62447c8a04b5a2ac0ec9c80a67568a2a8ece2563172cbadaa7dac67e410217678041cbecf601e1da1292e
@@ -10,7 +10,7 @@ module Goldiloader
10
10
  def preloaded(model, cache_name:, key:, &block)
11
11
  unless preloaded?(cache_name)
12
12
  ids = models.map do |record|
13
- record.public_send(key)
13
+ key_from_record(record, key)
14
14
  end
15
15
 
16
16
  # We're using instance_exec instead of a simple yield to make sure that the
@@ -26,13 +26,24 @@ module Goldiloader
26
26
 
27
27
  private
28
28
 
29
+ def key_from_record(record, key_or_key_list)
30
+ if key_or_key_list.is_a?(Array)
31
+ # allow passing an array of keys that will be collected from the record
32
+ key_or_key_list.map do |key|
33
+ record.public_send(key)
34
+ end
35
+ else
36
+ record.public_send(key_or_key_list)
37
+ end
38
+ end
39
+
29
40
  def store_preloaded(cache_name, preloaded_hash)
30
41
  @custom_preloads ||= {}
31
42
  @custom_preloads[cache_name] = preloaded_hash
32
43
  end
33
44
 
34
45
  def fetch_preloaded(cache_name, instance, key:)
35
- @custom_preloads&.dig(cache_name, instance.public_send(key))
46
+ @custom_preloads&.dig(cache_name, key_from_record(instance, key))
36
47
  end
37
48
 
38
49
  def preloaded?(cache_name)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Goldiloader
4
- VERSION = '5.1.0'
4
+ VERSION = '5.2.0'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: goldiloader
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.1.0
4
+ version: 5.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joel Turkel
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-11-04 00:00:00.000000000 Z
11
+ date: 2023-12-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord