fume-aloader 0.1.4 → 0.1.5

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: 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: []