fume-aloader 0.1.4 → 0.1.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: d28c0f8cbcfe64fca00ab2f6ca8b9cdefeab90b866707e3ce04385a8ea369d52
4
- data.tar.gz: 16b395ef8d8a26e26f6997eb5af7f89f1acad2b1d48d9f7dca0381c14e3f1a86
3
+ metadata.gz: c8eda2429fb44edfe0b79564fff46b5da2141ec5ba0576fbb5fe02abd173c230
4
+ data.tar.gz: 2e00e7e678f27454a754a621bd82427a89449f6707161a6623f40dc6d00613fc
5
5
  SHA512:
6
- metadata.gz: 5a3c7e7784c54ece83c902c5c890d4ba608cd7726993af164446bd21dba029fadda12a8b95b3d85d0587033a059f800c5899e78335cf010075a69793ed668962
7
- data.tar.gz: 902c5cbb173817c7e1df8de2a4ca2790251a4ca63fac323a6b219e3b5b2b4907ffaf3ae793068d660311c7d7716e58305dbac21875a92c09600ff8cc7ace5a0a
6
+ metadata.gz: e345b5a434ae6428b6ba81a67c1d0ecc149d19ed50e79b882919d726d6ab700d8bd9733a1f742f22df32cdcc276f056bb295d8373460c2d839a037e4b7f948e9
7
+ data.tar.gz: cd6fea905d1d95fde882b7f0ff2d75c0bc6eccddc2974b1028ca35bb8bbcf10b2a1704059d217f693cae3a1c75a73e6a20659346a0df442722c40319a78ce69a
@@ -10,15 +10,22 @@ module Fume::Aloader
10
10
  attr_accessor :cached_values
11
11
  attr_accessor :preload_values
12
12
 
13
- def initialize(records, klass = nil, &block)
14
- self.profile = :default
13
+ def initialize(records, options = {}, &block)
14
+ self.profile = options[:preset] || :default
15
15
  self.presets = {}
16
- self.klass = klass || records.klass
16
+ self.klass = options[:klass] || records.klass
17
17
 
18
18
  self.cached_values = {}
19
19
  self.preload_values = {}
20
20
  self.records = records
21
+
21
22
  instance_exec(&block) if block
23
+
24
+ if options[:inject]
25
+ self.records.each do |record|
26
+ record.aloader = self
27
+ end
28
+ end
22
29
  end
23
30
 
24
31
  def find_cached_value(record, name)
@@ -196,8 +203,7 @@ module Fume::Aloader
196
203
  return attribute[:scope_includes] || [] if attr_preset_name.nil?
197
204
 
198
205
  association_klass ||= klass.new.association(name).reflection.klass
199
- loader = association_klass.al_build([])
200
- loader.active(attr_preset_name)
206
+ loader = association_klass.al_build([], preset: attr_preset_name)
201
207
  loader.build_profile_scope_includes
202
208
  end
203
209
 
@@ -22,15 +22,16 @@ module Fume::Aloader
22
22
 
23
23
  def al_build(preset = :default)
24
24
  return self.aloader if self.aloader
25
- self.aloader = self.class.al_build([ self ])
26
- self.aloader.active(preset)
25
+ self.aloader = self.class.al_build([ self ], preset: preset)
27
26
  end
28
27
 
29
28
  module ClassMethods
30
29
  def aloader_init(&block)
31
- define_singleton_method :al_build do |records|
30
+ define_singleton_method :al_build do |records, options = {}|
32
31
  dsl = DSL.new(&block)
33
- dsl.apply_config(AssociationLoader.new(records, self))
32
+ loader = dsl.apply_config(AssociationLoader.new(records, { klass: self }.merge(options)))
33
+
34
+ loader
34
35
  end
35
36
  end
36
37
  end
@@ -11,13 +11,8 @@ module Fume::Aloader
11
11
  def loaders_init(parents, preset)
12
12
  values = parents.map { |it| it.send(reflection.name) }.compact
13
13
  return [] if !reflection.klass.respond_to?(:al_build)
14
- loader = reflection.klass.al_build(values)
14
+ loader = reflection.klass.al_build(values, preset: preset, inject: true)
15
15
 
16
- values.each do |value|
17
- value.aloader = loader
18
- end
19
-
20
- loader.active(preset) if preset
21
16
  [ loader ]
22
17
  end
23
18
  end
@@ -59,13 +59,8 @@ module Fume::Aloader
59
59
  values_mapping.each do |type, values|
60
60
  loader_klass = type.constantize
61
61
  next if !loader_klass.respond_to?(:al_build)
62
- loader = loader_klass.al_build(values)
62
+ loader = loader_klass.al_build(values, preset: preset, inject: true)
63
63
 
64
- values.each do |value|
65
- value.aloader = loader
66
- end
67
-
68
- loader.active(preset) if preset
69
64
  loader
70
65
  end
71
66
  end
@@ -22,13 +22,8 @@ module Fume::Aloader
22
22
  def loaders_init(parents, preset)
23
23
  values = parents.flat_map { |it| it.send(reflection.name) }.compact
24
24
  return [] if !reflection.klass.respond_to?(:al_build)
25
- loader = reflection.klass.al_build(values)
25
+ loader = reflection.klass.al_build(values, preset: preset, inject: true)
26
26
 
27
- values.each do |value|
28
- value.aloader = loader
29
- end
30
-
31
- loader.active(preset) if preset
32
27
  [ loader ]
33
28
  end
34
29
  end
@@ -1,5 +1,5 @@
1
1
  module Fume
2
2
  module Aloader
3
- VERSION = "0.1.4"
3
+ VERSION = "0.1.5"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fume-aloader
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - sunteya
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-05-16 00:00:00.000000000 Z
11
+ date: 2022-06-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -136,7 +136,7 @@ dependencies:
136
136
  - - "~>"
137
137
  - !ruby/object:Gem::Version
138
138
  version: 2.20.0
139
- description:
139
+ description:
140
140
  email:
141
141
  - sunteya@gmail.com
142
142
  executables: []
@@ -167,7 +167,7 @@ homepage: https://github.com/sunteya/fume-aloader
167
167
  licenses:
168
168
  - MIT
169
169
  metadata: {}
170
- post_install_message:
170
+ post_install_message:
171
171
  rdoc_options: []
172
172
  require_paths:
173
173
  - lib
@@ -183,7 +183,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
183
183
  version: '0'
184
184
  requirements: []
185
185
  rubygems_version: 3.1.6
186
- signing_key:
186
+ signing_key:
187
187
  specification_version: 4
188
188
  summary: a configurable eager loading plugin for rails
189
189
  test_files: []