Class: FactoryDataPreloader::PreloaderCollection

Inherits:
Array
  • Object
show all
Defined in:
lib/factory_data_preloader/preloader_collection.rb

Direct Known Subclasses

AllPreloaders

Instance Method Summary collapse

Instance Method Details

#dependency_orderObject



3
4
5
6
7
8
9
10
11
12
13
14
15
16
# File 'lib/factory_data_preloader/preloader_collection.rb', line 3

def dependency_order
  unordered_preloaders = Array.new(self) # rather than using self.dup since singleton doesn't allow duping.
  ordered_preloaders = []

  until unordered_preloaders.empty?
    unordered_preloaders.each do |preloader|
      if preloader.dependencies.all? { |dependency| ordered_preloaders.include?(dependency) }
        ordered_preloaders << unordered_preloaders.delete(preloader)
      end
    end
  end

  ordered_preloaders
end

#from_symbol(symbol, raise_error = true) ⇒ Object



18
19
20
21
22
23
# File 'lib/factory_data_preloader/preloader_collection.rb', line 18

def from_symbol(symbol, raise_error = true)
  unless preloader = self.detect { |p| p.model_type == symbol }
    raise PreloaderNotDefinedError, "The preloader for :#{symbol} has not been defined." if raise_error
  end
  preloader
end