Sha256: 7b5546a2736a289a62578ac491da419793284c6aecc1990b759ad14ed4dc4f67

Contents?: true

Size: 904 Bytes

Versions: 7

Compression:

Stored size: 904 Bytes

Contents

module FactoryDataPreloader
  class PreloaderCollection < Array
    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

    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
  end

  class AllPreloaders < PreloaderCollection
    include Singleton
  end

end

Version data entries

7 entries across 7 versions & 2 rubygems

Version Path
myronmarston-factory_data_preloader-0.5.0 lib/factory_data_preloader/preloader_collection.rb
myronmarston-factory_data_preloader-0.5.1 lib/factory_data_preloader/preloader_collection.rb
myronmarston-factory_data_preloader-0.5.2 lib/factory_data_preloader/preloader_collection.rb
factory_data_preloader-1.0.3 lib/factory_data_preloader/preloader_collection.rb
factory_data_preloader-1.0.2 lib/factory_data_preloader/preloader_collection.rb
factory_data_preloader-1.0.1 lib/factory_data_preloader/preloader_collection.rb
factory_data_preloader-0.5.2 lib/factory_data_preloader/preloader_collection.rb