Class: Brainstem::Preloader

Inherits:
Object
  • Object
show all
Defined in:
lib/brainstem/preloader.rb

Overview

Takes a list of arbitrarily nested objects, compacts them, de-duplicates them, and passes them to ActiveRecord to preload.

The following is considered a valid data structure:

[:workspaces, {"workspaces" => [:projects], "users" }

Which will produce the following for ActiveRecord:

{"workspaces" => [:projects], "users" => []}

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(models, preloads, reflections, preload_method = nil) ⇒ Preloader

Returns a new instance of Preloader.



36
37
38
39
40
41
42
# File 'lib/brainstem/preloader.rb', line 36

def initialize(models, preloads, reflections, preload_method = nil)
  self.models         = models
  self.preloads       = preloads.compact
  self.reflections    = reflections
  self.preload_method = preload_method
  self.valid_preloads = {}
end

Instance Attribute Details

#modelsObject

Instance API



27
28
29
# File 'lib/brainstem/preloader.rb', line 27

def models
  @models
end

#preload_method=(value) ⇒ Object

Sets the attribute preload_method

Parameters:

  • value

    the value to set the attribute preload_method to.



34
35
36
# File 'lib/brainstem/preloader.rb', line 34

def preload_method=(value)
  @preload_method = value
end

#preloadsObject

Instance API



27
28
29
# File 'lib/brainstem/preloader.rb', line 27

def preloads
  @preloads
end

#reflectionsObject

Instance API



27
28
29
# File 'lib/brainstem/preloader.rb', line 27

def reflections
  @reflections
end

#valid_preloadsObject

Instance API



27
28
29
# File 'lib/brainstem/preloader.rb', line 27

def valid_preloads
  @valid_preloads
end

Class Method Details

.preload(*args) ⇒ Object



19
20
21
# File 'lib/brainstem/preloader.rb', line 19

def preload(*args)
  new(*args).call
end

Instance Method Details

#callObject



44
45
46
47
# File 'lib/brainstem/preloader.rb', line 44

def call
  clean!
  preload!
end