module Datamappify::Data::Provider::CommonProvider::ModuleMethods
Public Instance Methods
class_name()
click to toggle source
Non-namespaced class name
@return [String]
# File lib/datamappify/data/provider/common_provider.rb, line 22 def class_name @class_name ||= name.demodulize end
find_or_build_record_class(source_class_name)
click to toggle source
Finds or builds a data record class from the data provider
@param source_class_name [String]
@return [Class]
the data record class
# File lib/datamappify/data/provider/common_provider.rb, line 37 def find_or_build_record_class(source_class_name) namespace = build_or_return_namespace(source_class_name) record_class = source_class_name.safe_constantize # check for existing record class if record_class && !entity_class?(source_class_name) record_class # check for existing record class in the Datamappify::Data::Record::Provider namespace elsif namespace.const_defined?(source_class_name.demodulize, false) namespace.const_get(source_class_name.demodulize) # no existing record class is found, let's build it else build_record_class(source_class_name) end end
load_criterias()
click to toggle source
Loads all the criteria files from the data provider
@return [void]
# File lib/datamappify/data/provider/common_provider.rb, line 15 def load_criterias Dir[Datamappify.root.join("data/criteria/#{path_name}/*.rb")].each { |file| require file } end
path_name()
click to toggle source
@return [String]
# File lib/datamappify/data/provider/common_provider.rb, line 27 def path_name @path_name ||= class_name.underscore end
Private Instance Methods
build_or_return_namespace(source_class_name)
click to toggle source
Builds or returns the namespace for the source class
@param source_class_name [String]
@return [Module]
# File lib/datamappify/data/provider/common_provider.rb, line 67 def build_or_return_namespace(source_class_name) source_class_name.deconstantize.split('::').inject(records_namespace) do |namespaces, namespace| if namespaces.const_defined?(namespace, false) namespaces.const_get(namespace) else namespaces.const_set(namespace, Module.new) end end end
entity_class?(source_class_name)
click to toggle source
@return [Boolean]
# File lib/datamappify/data/provider/common_provider.rb, line 58 def entity_class?(source_class_name) source_class_name.constantize.ancestors.include?(Datamappify::Entity) end
records_namespace()
click to toggle source
The namespace for the data records, e.g. Datamappify::Data::Record::ActiveRecord
@return [Module]
# File lib/datamappify/data/provider/common_provider.rb, line 80 def records_namespace @records_namespace ||= Data::Record.const_set(class_name, Module.new) end