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