Module: ReeMapper
- Includes:
- Ree::PackageDSL
- Defined in:
- lib/ree_lib/packages/ree_mapper/package/ree_mapper.rb
Defined Under Namespace
Modules: DSL Classes: AbstractType, AbstractWrapper, Any, ArgumentError, Array, Bool, BuildMapperFactory, BuildMapperStrategy, CoercionError, Date, DateTime, DbLoadCompiler, DefaultFactory, Error, ErrorWithLocation, Field, FieldsFilter, FilterFieldsContract, Float, HashOutput, Integer, Mapper, MapperFactory, MapperFactoryProxy, MapperStrategy, ObjectOutput, Rational, ReeDtoOutput, StrategyOutput, String, StructOutput, Time, TypeError, UnsupportedTypeError
Class Method Summary collapse
- .build_mapper_factory(mod) ⇒ Object
-
.db_load_performance_mode? ⇒ Boolean
Defensive read: an older ree gem without the flag means the mode is off.
- .get_mapper_factory(mod) ⇒ Object
Class Method Details
.build_mapper_factory(mod) ⇒ Object
92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 |
# File 'lib/ree_lib/packages/ree_mapper/package/ree_mapper.rb', line 92 def self.build_mapper_factory(mod) pckg_name = ReeString::Underscore.new.call(mod.name) factory_path = "#{pckg_name}/mapper_factory" if Ree.irb_mode? && Object.const_defined?("#{mod.name}::MapperFactory") && mod != self return Object.const_get("#{mod.name}::MapperFactory").new end mapper_factory_klass = if package_file_exists?(factory_path) && mod != self package_require(factory_path) Object.const_get("#{mod.name}::MapperFactory") else ReeMapper::DefaultFactory end mapper_factory_klass.new end |
.db_load_performance_mode? ⇒ Boolean
Defensive read: an older ree gem without the flag means the mode is off
58 59 60 |
# File 'lib/ree_lib/packages/ree_mapper/package/ree_mapper.rb', line 58 def self.db_load_performance_mode? Ree.respond_to?(:db_load_performance_mode?) && Ree.db_load_performance_mode? end |
.get_mapper_factory(mod) ⇒ Object
62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 |
# File 'lib/ree_lib/packages/ree_mapper/package/ree_mapper.rb', line 62 def self.get_mapper_factory(mod) if !mod.is_a?(Module) raise Ree::Error.new("module should be provided", :invalid_dsl_usage) end if mod.name.nil? raise Ree::Error.new("anonymous modules are not supported", :invalid_dsl_usage) end if mod.name.split('::').size > 1 raise Ree::Error.new("top level module should be provided", :invalid_dsl_usage) end factory = mod.instance_variable_get(:@mapper_factory) return factory if factory if !mod.instance_variable_get(:@mapper_semaphore) mod.instance_variable_set(:@mapper_semaphore, Mutex.new) end mod.instance_variable_get(:@mapper_semaphore).synchronize do factory = self.build_mapper_factory(mod) mod.instance_variable_set(:@mapper_factory, factory) end factory end |