Class: RGeo::ActiveRecord::RGeoFactorySettings
- Inherits:
-
Object
- Object
- RGeo::ActiveRecord::RGeoFactorySettings
- Defined in:
- lib/rgeo/active_record/ar_factory_settings.rb
Overview
An object that manages the RGeo factories for a ConnectionPool.
Constant Summary collapse
- DEFAULT =
self.new
Instance Method Summary collapse
-
#clear!(table_name = nil) ⇒ Object
Clear settings for the given table name, or for all tables.
-
#get_column_factory(table_name, column_name, params = nil) ⇒ Object
Get the factory or factory generator for the given table name and column name.
-
#get_factory_generator(table_name) ⇒ Object
Get the default factory generator for the given table.
-
#initialize ⇒ RGeoFactorySettings
constructor
:nodoc:.
-
#set_column_factory(table_name, column_name, factory) ⇒ Object
Set the factory or factory generator for the given table name and column name.
-
#set_factory_generator(table_name, generator) ⇒ Object
Set the default factory generator for the given table.
Constructor Details
#initialize ⇒ RGeoFactorySettings
:nodoc:
16 17 18 19 |
# File 'lib/rgeo/active_record/ar_factory_settings.rb', line 16 def initialize # :nodoc: @factory_generators = {} @column_factories = {} end |
Instance Method Details
#clear!(table_name = nil) ⇒ Object
Clear settings for the given table name, or for all tables
49 50 51 52 53 54 55 56 57 58 |
# File 'lib/rgeo/active_record/ar_factory_settings.rb', line 49 def clear!(table_name = nil) if table_name table_name = table_name.to_s @factory_generators.delete(table_name) @column_factories.delete(table_name) else @factory_generators.clear @column_factories.clear end end |
#get_column_factory(table_name, column_name, params = nil) ⇒ Object
Get the factory or factory generator for the given table name and column name.
32 33 34 35 36 37 38 39 40 41 |
# File 'lib/rgeo/active_record/ar_factory_settings.rb', line 32 def get_column_factory(table_name, column_name, params = nil) table_name = table_name.to_s column_name = column_name.to_s result = (@column_factories[table_name] ||= {})[column_name] || @factory_generators[table_name] || ::RGeo::ActiveRecord::DEFAULT_FACTORY_GENERATOR if params && !result.kind_of?(::RGeo::Feature::Factory::Instance) result = result.call(params) end result end |
#get_factory_generator(table_name) ⇒ Object
Get the default factory generator for the given table
22 23 24 |
# File 'lib/rgeo/active_record/ar_factory_settings.rb', line 22 def get_factory_generator(table_name) @factory_generators[table_name.to_s] || ::RGeo::ActiveRecord::DEFAULT_FACTORY_GENERATOR end |
#set_column_factory(table_name, column_name, factory) ⇒ Object
Set the factory or factory generator for the given table name and column name.
44 45 46 |
# File 'lib/rgeo/active_record/ar_factory_settings.rb', line 44 def set_column_factory(table_name, column_name, factory) (@column_factories[table_name.to_s] ||= {})[column_name.to_s] = factory end |
#set_factory_generator(table_name, generator) ⇒ Object
Set the default factory generator for the given table
27 28 29 |
# File 'lib/rgeo/active_record/ar_factory_settings.rb', line 27 def set_factory_generator(table_name, generator) @factory_generators[table_name.to_s] = generator end |