Class: Priloo::Preloadable::PreloadBatch

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

Instance Method Summary collapse

Constructor Details

#initializePreloadBatch

Returns a new instance of PreloadBatch.



50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
# File 'lib/priloo/preloadable.rb', line 50

def initialize(*)
    super

    clazz = ObjectSpace.each_object(decorated_class).first

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

    clazz.declare_preloader(decorated_method_name, preloader)

    clazz.send(:define_method, decorated_method_name) do
        return preloader.extract(self) if preloader.injected?(self)

        preloader.preload([self]).first
    end
end