class ExtensionsLoader::Loader

Attributes

mapping[R]

Public Class Methods

new(mapping) click to toggle source
# File lib/extensions_loader/loader.rb, line 5
def initialize(mapping)
  @mapping = mapping
  verify!
end

Public Instance Methods

load!() click to toggle source

Perform extension loading on all mappings

# File lib/extensions_loader/loader.rb, line 11
def load!
  mapping.each do |klass, loadable|
    if loadable.is_a? Array
      loadable.each { |extension| load_extension(klass, extension) }
    else
      load_extension(klass, loadable)
    end
  end
end

Private Instance Methods

load_extension(klass, extension) click to toggle source

Include ‘extension` into class `klass`

# File lib/extensions_loader/loader.rb, line 29
def load_extension(klass, extension)
  klass.include(extension)
end
verify!() click to toggle source

Ensure that all defined extensions are either a Module or Array.

# File lib/extensions_loader/loader.rb, line 24
def verify!
  mapping.each { |k, v| raise "#{k}'s extension must provide a Module or Array." unless v.is_a?(Module) || v.is_a?(Array) }
end