class Priloo::Preloaders::GenericPreloader

Constants

PRIVATE_STORE_NAME

Attributes

block[R]
dependencies[R]
name[R]

Public Class Methods

new(name, dependencies: [], &block) click to toggle source
Calls superclass method Priloo::Preloaders::BasePreloader::new
# File lib/priloo/preloaders/generic_preloader.rb, line 10
def initialize(name, dependencies: [], &block)
    super(self)
    @name = name
    @dependencies = dependencies
    @block = block
end

Public Instance Methods

extract(target) click to toggle source
# File lib/priloo/preloaders/generic_preloader.rb, line 25
def extract(target)
    fetch_store(target).fetch(name)
end
inject(target, value) click to toggle source
# File lib/priloo/preloaders/generic_preloader.rb, line 29
def inject(target, value)
    fetch_or_create_store(target)[name] = value
end
injected?(target) click to toggle source
# File lib/priloo/preloaders/generic_preloader.rb, line 21
def injected?(target)
    fetch_store(target)&.key?(name) || false
end
preload(instances) click to toggle source
# File lib/priloo/preloaders/generic_preloader.rb, line 17
def preload(instances)
    block[instances]
end

Private Instance Methods

fetch_or_create_store(target) click to toggle source
# File lib/priloo/preloaders/generic_preloader.rb, line 39
def fetch_or_create_store(target)
    obj = target._preloadable_target
    return fetch_store(target) if obj.instance_variable_defined?(PRIVATE_STORE_NAME)

    store = {}
    obj.instance_variable_set(PRIVATE_STORE_NAME, store)
    store
end
fetch_store(target) click to toggle source
# File lib/priloo/preloaders/generic_preloader.rb, line 35
def fetch_store(target)
    target._preloadable_target.instance_variable_get(PRIVATE_STORE_NAME)
end