class Impex::Lookup

Attributes

config[R]
file_loaders[R]
history_managers[R]

Public Class Methods

new(config = {}) click to toggle source
# File lib/impex/lookup.rb, line 16
def initialize(config = {})
  @config = config

  @file_loaders     = ::ActiveSupport::HashWithIndifferentAccess.new
  @history_managers = ::ActiveSupport::HashWithIndifferentAccess.new

  setup_file_loaders
  setup_history_managers
end

Public Instance Methods

file_loader() click to toggle source
# File lib/impex/lookup.rb, line 26
def file_loader
  lookup_for_file_loader
end
history_manager() click to toggle source
# File lib/impex/lookup.rb, line 30
def history_manager
  lookup_for_history_manager
end

Private Instance Methods

lookup_for_file_loader() click to toggle source
# File lib/impex/lookup.rb, line 35
def lookup_for_file_loader
  klass = @file_loaders[@config[:file_loader][:loader]]

  raise Impex::FileLoader::UnknownFileLoaderError,
        "undefined class #{@config[:file_loader][:loader].to_s.camelize}" if klass.nil?

  klass.new(@config[:file_loader])
end
lookup_for_history_manager() click to toggle source
# File lib/impex/lookup.rb, line 44
def lookup_for_history_manager
  klass = @history_managers[@config[:history_manager][:manager]]

  raise Impex::HistoryManager::UnknownHistoryManagerError,
        "undefined class #{@config[:history_manager][:manager].to_s.camelize}" if klass.nil?

  klass.new(@config)
end
setup_file_loaders() click to toggle source
# File lib/impex/lookup.rb, line 53
def setup_file_loaders
  ::Dir.glob(::File.join(::File.dirname(__FILE__), 'file_loaders/*.rb')).each do |file|
    /(?<klass>\w+)\.rb/ =~ file

    @file_loaders[klass] = "::Impex::FileLoader::#{klass.camelize}".constantize
  end
end
setup_history_managers() click to toggle source
# File lib/impex/lookup.rb, line 61
def setup_history_managers
  ::Dir.glob(::File.join(::File.dirname(__FILE__), 'history_managers/*.rb')).each do |file|
    /(?<klass>\w+)\.rb/ =~ file

    @history_managers[klass] = "::Impex::HistoryManager::#{klass.camelize}".constantize
  end
end