Class: Priloo::Preloadable::PreloadDependencies

Inherits:
Decors::DecoratorBase
  • Object
show all
Defined in:
lib/priloo/preloadable.rb

Instance Method Summary collapse

Constructor Details

#initializePreloadDependencies

Returns a new instance of PreloadDependencies.



27
28
29
30
31
32
33
34
35
36
# File 'lib/priloo/preloadable.rb', line 27

def initialize(*)
    super

    @preloader = Preloaders::GenericPreloader.new(
        decorated_method_name,
        dependencies: [*decorator_args, **decorator_kwargs]
    ) { |list| list.map { |inst| undecorated_method.bind(inst._preloadable_target).call } }

    decorated_class.declare_preloader(decorated_method_name, preloader)
end

Instance Method Details

#call(instance) ⇒ Object



38
39
40
41
42
# File 'lib/priloo/preloadable.rb', line 38

def call(instance, *)
    return preloader.extract(instance) if preloader.injected?(instance)

    preloader.preload([instance].bm_preload(*decorator_args, **decorator_kwargs)).first
end