Class: RGeo::ActiveRecord::RGeoFactorySettings

Inherits:
Object
  • Object
show all
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

Constructor Details

#initializeRGeoFactorySettings

: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