class Alephant::Publisher::Request::DataMapperFactory

Attributes

base_path[R]
connection[R]

Public Class Methods

new(connection, base_path) click to toggle source
# File lib/alephant/publisher/request/data_mapper_factory.rb, line 11
def initialize(connection, base_path)
  @connection = connection
  @base_path  = base_path
  raise InvalidComponentBasePath, base_path unless File.directory? base_path
end

Public Instance Methods

create(component_id, context = {}) click to toggle source
# File lib/alephant/publisher/request/data_mapper_factory.rb, line 17
def create(component_id, context = {})
  require base_path_for component_id

  klass = mapper_class_for(component_id)
  klass.new(connection, context)
rescue LoadError => e
  log_error_with_metric(e, component_id, "PublisherRequestDataMapperFactoryInvalidComponentName")
  raise InvalidComponentName, "Invalid component name: #{component_id}"
rescue NameError => e
  log_error_with_metric(e, component_id, "PublisherRequestDataMapperFactoryInvalidComponentClassName")
  raise InvalidComponentClassName, "Invalid class name #{klass}"
rescue => e
  log_error_with_metric(e, component_id, "PublisherRequestDataMapperFactoryInvalidComponent")
  raise InvalidComponent, "Name: #{component_id}, Class: #{klass}"
end

Protected Instance Methods

base_path_for(component_id) click to toggle source
# File lib/alephant/publisher/request/data_mapper_factory.rb, line 35
def base_path_for(component_id)
  "#{base_path}/#{component_id}/mapper"
end
camalize(snake_case) click to toggle source
# File lib/alephant/publisher/request/data_mapper_factory.rb, line 39
def camalize(snake_case)
  "#{snake_case.split('_').collect(&:capitalize).join}"
end
mapper_class_for(component_id) click to toggle source
# File lib/alephant/publisher/request/data_mapper_factory.rb, line 43
def mapper_class_for(component_id)
  Object.const_get("#{camalize component_id}Mapper")
end