class Priloo::Preloadable::PreloadBatch

Public Class Methods

new(*) click to toggle source
Calls superclass method
# 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