fume-aloader 0.1.3 → 0.1.6

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: 3d205f2e1934bebb8d922c2d17a5126b4a46d1f25897edbc82be331b3010e255
4
- data.tar.gz: 37a54264eb5998a64bff6f9e400be6d1d2bcade3b5cc281add1687cbf88f9f0e
3
+ metadata.gz: 6dc81c2dd3679bbead750f74972bc067d9ef01b7780247e77c655169916714e3
4
+ data.tar.gz: caaa1cc9f14018a031847e3968103f5384a98614ab12b5d891a510d38eb762f2
5
5
  SHA512:
6
- metadata.gz: 1b7192010a01bcc3cdc5ed17b91523d9f3b8135db14f6c7ef2a588bebf928eb83871115d89c548274dd999609f9cf59bd4c027250719c401b1b48ca82a2cdcfd
7
- data.tar.gz: f4676daf7024f3b81eaa85599f1a2923de222027aefedac1cb9e499850eb87a09d6d7dd41afc0138577a8d2d054d19ae169e7bae909119792fecc851eb14a17b
6
+ metadata.gz: 9ad64312dc49a07a91f3f0c675f89aa2290c568f062d01fc56b255e93cac4bb31ce034a872933299a59af44c4c3d9b5f9f567198a690eb6011adcdc2fa2f50ee
7
+ data.tar.gz: 0050c9b262182d57ce8673b7880a15fe4cda47856a0f401c4e1e2623c7c6e43906eae69e7c0333332afb0c00aed36132b613ad0f2e36a065b73b9a4a50b4d6a6
@@ -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
 
@@ -20,11 +20,18 @@ module Fume::Aloader
20
20
  end
21
21
  end
22
22
 
23
+ def al_build(preset = :default)
24
+ return self.aloader if self.aloader
25
+ self.aloader = self.class.al_build([ self ], preset: preset)
26
+ end
27
+
23
28
  module ClassMethods
24
29
  def aloader_init(&block)
25
- define_singleton_method :al_build do |records|
30
+ define_singleton_method :al_build do |records, options = {}|
26
31
  dsl = DSL.new(&block)
27
- dsl.apply_config(AssociationLoader.new(records, self))
32
+ loader = dsl.apply_config(AssociationLoader.new(records, { klass: self }.merge(options)))
33
+
34
+ loader
28
35
  end
29
36
  end
30
37
  end
@@ -10,7 +10,7 @@ module Fume::Aloader
10
10
  end
11
11
 
12
12
  def spawn(*args)
13
- result = already_in_scope? ? klass.all : clone
13
+ result = super
14
14
  result.aloader = nil
15
15
  result.al_init_loader
16
16
  result.aloader&.spawn_from(self.aloader) if self.aloader
@@ -46,11 +46,6 @@ module Fume::Aloader
46
46
  end
47
47
 
48
48
  def al_to_scope(preset = :default)
49
- if self.is_a?(ActiveRecord::Associations::CollectionProxy)
50
- scope.al_to_scope(preset)
51
- return
52
- end
53
-
54
49
  al_init_loader
55
50
  self.aloader.active(preset)
56
51
  result = self.aloader.apply_profile_scope_includes(self)
@@ -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.3"
3
+ VERSION = "0.1.6"
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.3
4
+ version: 0.1.6
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-10 00:00:00.000000000 Z
11
+ date: 2022-07-05 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: []