Module: ActiveRecord::ConnectionAdapters::PostGIS
- Defined in:
- lib/active_record/connection_adapters/postgis.rb,
lib/active_record/connection_adapters/postgis/quoting.rb,
lib/active_record/connection_adapters/postgis/railtie.rb,
lib/active_record/connection_adapters/postgis/version.rb,
lib/active_record/connection_adapters/postgis/constants.rb,
lib/active_record/connection_adapters/postgis/type/point.rb,
lib/active_record/connection_adapters/postgis/oid/spatial.rb,
lib/active_record/connection_adapters/postgis/test_helpers.rb,
lib/active_record/connection_adapters/postgis/type/polygon.rb,
lib/active_record/connection_adapters/postgis/type/spatial.rb,
lib/active_record/connection_adapters/postgis/schema_dumper.rb,
lib/active_record/connection_adapters/postgis/type/geometry.rb,
lib/active_record/connection_adapters/postgis/column_methods.rb,
lib/active_record/connection_adapters/postgis/type/geography.rb,
lib/active_record/connection_adapters/postgis/spatial_queries.rb,
lib/active_record/connection_adapters/postgis/table_definition.rb,
lib/active_record/connection_adapters/postgis/type/line_string.rb,
lib/active_record/connection_adapters/postgis/type/multi_point.rb,
lib/active_record/connection_adapters/postgis/column_extensions.rb,
lib/active_record/connection_adapters/postgis/oid/spatial_types.rb,
lib/active_record/connection_adapters/postgis/schema_statements.rb,
lib/active_record/connection_adapters/postgis/adapter_extensions.rb,
lib/active_record/connection_adapters/postgis/type/multi_polygon.rb,
lib/active_record/connection_adapters/postgis/database_statements.rb,
lib/active_record/connection_adapters/postgis/spatial_column_type.rb,
lib/active_record/connection_adapters/postgis/spatial_column_methods.rb,
lib/active_record/connection_adapters/postgis/type/multi_line_string.rb,
lib/active_record/connection_adapters/postgis/type/geometry_collection.rb
Defined Under Namespace
Modules: AdapterExtensions, ColumnDefinitionUtils, ColumnExtensions, ColumnMethods, DatabaseStatements, OID, Quoting, RegisterTypes, SchemaDumper, SchemaStatements, SpatialColumnMethods, SpatialQueries, SpatialScopes, TableDefinition, TestHelpers, Type, TypeRegistration
Classes: Error, Railtie, SpatialColumnAssertion, SpatialColumnType, SpatialTableDefinition
Constant Summary
collapse
- SPATIAL_TYPES_FOR_REGISTRATION =
%i[
st_geography st_geometry st_geometry_collection st_line_string st_multi_line_string
st_multi_point st_multi_polygon st_point st_polygon line_string
].freeze
- SPATIAL_OPTIONS_FOR_REGISTRATION =
%i[srid has_z has_m geographic].freeze
- POSTGIS_SYSTEM_TABLES =
%w[
geography_columns
geometry_columns
layer
raster_columns
raster_overviews
spatial_ref_sys
topology
].freeze
- VERSION =
"0.6.0"
- SPATIAL_TYPES =
%i[
geometry
geography
point
line_string
polygon
multi_point
multi_line_string
multi_polygon
geometry_collection
].freeze
- GEOMETRIC_TYPES =
%i[
st_geography
st_geometry
st_geometry_collection
st_line_string
st_multi_line_string
st_multi_point
st_multi_polygon
st_point
st_polygon
].freeze
- VALID_TYPES =
%w[
point line_string polygon multi_point
multi_line_string multi_polygon geometry_collection geography
].freeze
Class Method Summary
collapse
Class Method Details
.extend_postgresql_adapter ⇒ Object
.ignore_postgis_system_tables ⇒ Object
.initialize! ⇒ Object
48
49
50
51
52
53
54
55
56
57
|
# File 'lib/active_record/connection_adapters/postgis.rb', line 48
def self.initialize!
return if @initialized
@initialized = true
extend_postgresql_adapter
register_spatial_types
ignore_postgis_system_tables
end
|
.register_column_methods ⇒ Object
95
96
97
98
99
100
101
102
|
# File 'lib/active_record/connection_adapters/postgis.rb', line 95
def self.register_column_methods
PostgreSQL::TableDefinition.send(:define_column_methods,
:st_geography, :st_geometry, :st_geometry_collection, :st_line_string,
:st_multi_line_string, :st_multi_point, :st_multi_polygon, :st_point, :st_polygon,
:geography, :geometry, :geometry_collection, :line_string,
:multi_line_string, :multi_point, :multi_polygon, :polygon,
*SPATIAL_OPTIONS_FOR_REGISTRATION)
end
|
.register_native_database_types ⇒ Object
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
|
# File 'lib/active_record/connection_adapters/postgis.rb', line 74
def self.register_native_database_types
PostgreSQLAdapter::NATIVE_DATABASE_TYPES[:st_geography] = { name: "geography" }
PostgreSQLAdapter::NATIVE_DATABASE_TYPES[:st_geometry] = { name: "geometry" }
PostgreSQLAdapter::NATIVE_DATABASE_TYPES[:st_geometry_collection] = { name: "geometry(GeometryCollection)" }
PostgreSQLAdapter::NATIVE_DATABASE_TYPES[:st_line_string] = { name: "geometry(LineString)" }
PostgreSQLAdapter::NATIVE_DATABASE_TYPES[:st_multi_line_string] = { name: "geometry(MultiLineString)" }
PostgreSQLAdapter::NATIVE_DATABASE_TYPES[:st_multi_point] = { name: "geometry(MultiPoint)" }
PostgreSQLAdapter::NATIVE_DATABASE_TYPES[:st_multi_polygon] = { name: "geometry(MultiPolygon)" }
PostgreSQLAdapter::NATIVE_DATABASE_TYPES[:st_point] = { name: "geometry(Point)" }
PostgreSQLAdapter::NATIVE_DATABASE_TYPES[:st_polygon] = { name: "geometry(Polygon)" }
PostgreSQLAdapter::NATIVE_DATABASE_TYPES[:geography] = { name: "geography" }
PostgreSQLAdapter::NATIVE_DATABASE_TYPES[:geometry] = { name: "geometry" }
PostgreSQLAdapter::NATIVE_DATABASE_TYPES[:geometry_collection] = { name: "geometry(GeometryCollection)" }
PostgreSQLAdapter::NATIVE_DATABASE_TYPES[:line_string] = { name: "geometry(LineString)" }
PostgreSQLAdapter::NATIVE_DATABASE_TYPES[:multi_line_string] = { name: "geometry(MultiLineString)" }
PostgreSQLAdapter::NATIVE_DATABASE_TYPES[:multi_point] = { name: "geometry(MultiPoint)" }
PostgreSQLAdapter::NATIVE_DATABASE_TYPES[:multi_polygon] = { name: "geometry(MultiPolygon)" }
PostgreSQLAdapter::NATIVE_DATABASE_TYPES[:polygon] = { name: "geometry(Polygon)" }
end
|
.register_spatial_types ⇒ Object
67
68
69
70
71
72
|
# File 'lib/active_record/connection_adapters/postgis.rb', line 67
def self.register_spatial_types
register_native_database_types
register_column_methods
register_type_classes
register_type_mapping
end
|
.register_type_classes ⇒ Object
104
105
106
107
108
109
110
111
112
113
114
|
# File 'lib/active_record/connection_adapters/postgis.rb', line 104
def self.register_type_classes
adapter_name = :postgresql
SPATIAL_TYPES_FOR_REGISTRATION.each do |type_name|
type_class_name = type_name.to_s.sub(/^st_/, "").split("_").map(&:capitalize).join
type_class = Type.const_get(type_class_name) rescue nil
if type_class
ActiveRecord::Type.register(type_name, type_class, adapter: adapter_name)
end
end
end
|
.register_type_mapping ⇒ Object
116
117
118
119
120
121
122
|
# File 'lib/active_record/connection_adapters/postgis.rb', line 116
def self.register_type_mapping
if PostgreSQLAdapter.respond_to?(:register_type_mapping)
PostgreSQLAdapter.register_type_mapping { |m| TypeRegistration.register!(m) }
else
PostgreSQLAdapter.singleton_class.prepend(RegisterTypes)
end
end
|
.schema_ignored_tables ⇒ Object
124
125
126
127
128
129
130
|
# File 'lib/active_record/connection_adapters/postgis.rb', line 124
def self.schema_ignored_tables
if ActiveRecord.respond_to?(:schema_ignored_tables)
ActiveRecord.schema_ignored_tables
else
PostgreSQL::SchemaDumper.ignore_tables
end
end
|