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