activerecord-postgis-adapter 3.0.0.beta5 → 3.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/active_record/connection_adapters/{postgis_adapter → postgis}/arel_tosql.rb +0 -0
- data/lib/active_record/connection_adapters/postgis/column_methods.rb +50 -0
- data/lib/active_record/connection_adapters/{postgis_adapter → postgis}/create_connection.rb +4 -4
- data/lib/active_record/connection_adapters/postgis/databases.rake +16 -0
- data/lib/active_record/connection_adapters/{postgis_adapter → postgis}/oid/spatial.rb +1 -1
- data/lib/active_record/connection_adapters/{postgis_adapter → postgis}/postgis_database_tasks.rb +1 -1
- data/lib/active_record/connection_adapters/{postgis_adapter → postgis}/railtie.rb +1 -1
- data/lib/active_record/connection_adapters/{postgis_adapter → postgis}/schema_statements.rb +2 -2
- data/lib/active_record/connection_adapters/{postgis_adapter → postgis}/setup.rb +1 -1
- data/lib/active_record/connection_adapters/{postgis_adapter → postgis}/spatial_column.rb +1 -1
- data/lib/active_record/connection_adapters/{postgis_adapter → postgis}/spatial_column_info.rb +2 -2
- data/lib/active_record/connection_adapters/{postgis_adapter → postgis}/spatial_table_definition.rb +7 -58
- data/lib/active_record/connection_adapters/{postgis_adapter → postgis}/version.rb +2 -2
- data/lib/active_record/connection_adapters/postgis_adapter.rb +78 -14
- data/test/basic_test.rb +1 -1
- data/test/ddl_test.rb +26 -17
- data/test/tasks_test.rb +2 -2
- data/test/type_test.rb +1 -1
- metadata +21 -23
- data/lib/active_record/connection_adapters/postgis_adapter/databases.rake +0 -17
- data/lib/active_record/connection_adapters/postgis_adapter/main_adapter.rb +0 -70
- data/lib/activerecord/postgis/adapter.rb +0 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cae625bce4f6b68a5af7ea8c529ec394f87893e6
|
4
|
+
data.tar.gz: 53f7eec3f8cf9f34d65b5b730ebb9b96752c5160
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b48c96beba75c73a99c290576316749f2116f2cd2b3e5763e4e58edabbe867998b9c3e4841b721bfb8254d88737a5120a5c0f369aff54c8b7e506d6e682f8055
|
7
|
+
data.tar.gz: eda94967ac1d14c80500ae57b62a38982152f8fd5b722d3c37a2995e046398d366214436f832e1942785758a77edd29637eb5a4eecab75fbddc02504686e94d9
|
File without changes
|
@@ -0,0 +1,50 @@
|
|
1
|
+
module ActiveRecord
|
2
|
+
module ConnectionAdapters
|
3
|
+
module PostGIS
|
4
|
+
module ColumnMethods
|
5
|
+
def spatial(name, options = {})
|
6
|
+
raise "You must set a type. For example: 't.spatial type: :st_point'" unless options[:type]
|
7
|
+
column(name, options[:type], options)
|
8
|
+
end
|
9
|
+
|
10
|
+
def geography(name, options = {})
|
11
|
+
column(name, :geography, options)
|
12
|
+
end
|
13
|
+
|
14
|
+
def geometry(name, options = {})
|
15
|
+
column(name, :geometry, options)
|
16
|
+
end
|
17
|
+
|
18
|
+
def geometry_collection(name, options = {})
|
19
|
+
column(name, :geometry_collection, options)
|
20
|
+
end
|
21
|
+
|
22
|
+
def line_string(name, options = {})
|
23
|
+
column(name, :line_string, options)
|
24
|
+
end
|
25
|
+
|
26
|
+
def multi_line_string(name, options = {})
|
27
|
+
column(name, :multi_line_string, options)
|
28
|
+
end
|
29
|
+
|
30
|
+
def multi_point(name, options = {})
|
31
|
+
column(name, :multi_point, options)
|
32
|
+
end
|
33
|
+
|
34
|
+
def multi_polygon(name, options = {})
|
35
|
+
column(name, :multi_polygon, options)
|
36
|
+
end
|
37
|
+
|
38
|
+
def st_point(name, options = {})
|
39
|
+
column(name, :st_point, options)
|
40
|
+
end
|
41
|
+
|
42
|
+
def st_polygon(name, options = {})
|
43
|
+
column(name, :st_polygon, options)
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
PostgreSQL::Table.send(:include, ColumnMethods)
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
if
|
1
|
+
if RUBY_ENGINE == 'jruby'
|
2
2
|
require 'active_record/connection_adapters/jdbcpostgresql_adapter'
|
3
3
|
else
|
4
4
|
require 'pg'
|
@@ -7,10 +7,10 @@ end
|
|
7
7
|
module ActiveRecord # :nodoc:
|
8
8
|
module ConnectionHandling # :nodoc:
|
9
9
|
|
10
|
-
if
|
10
|
+
if RUBY_ENGINE == 'jruby'
|
11
11
|
|
12
12
|
def postgis_connection(config)
|
13
|
-
config[:adapter_class] =
|
13
|
+
config[:adapter_class] = ConnectionAdapters::PostGISAdapter
|
14
14
|
postgresql_connection(config)
|
15
15
|
end
|
16
16
|
|
@@ -35,7 +35,7 @@ module ActiveRecord # :nodoc:
|
|
35
35
|
|
36
36
|
# The postgres drivers don't allow the creation of an unconnected PGconn object,
|
37
37
|
# so just pass a nil connection object for the time being.
|
38
|
-
ConnectionAdapters::PostGISAdapter
|
38
|
+
ConnectionAdapters::PostGISAdapter.new(nil, logger, conn_params, config)
|
39
39
|
end
|
40
40
|
|
41
41
|
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
namespace :db do
|
2
|
+
namespace :gis do
|
3
|
+
desc "Setup PostGIS data in the database"
|
4
|
+
task setup: [:load_config] do
|
5
|
+
environments = [Rails.env]
|
6
|
+
environments << "test" if Rails.env.development?
|
7
|
+
ActiveRecord::Base.configurations
|
8
|
+
.values_at(*environments)
|
9
|
+
.compact
|
10
|
+
.reject{ |config| config["database"].blank? }
|
11
|
+
.each do |config|
|
12
|
+
ActiveRecord::ConnectionAdapters::PostGIS::PostGISDatabaseTasks.new(config).setup_gis
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -3,7 +3,7 @@ require 'active_record/connection_adapters/postgis_adapter'
|
|
3
3
|
|
4
4
|
module ActiveRecord # :nodoc:
|
5
5
|
module ConnectionAdapters # :nodoc:
|
6
|
-
module
|
6
|
+
module PostGIS # :nodoc:
|
7
7
|
class Railtie < ::Rails::Railtie # :nodoc:
|
8
8
|
rake_tasks do
|
9
9
|
load ::File.expand_path("databases.rake", ::File.dirname(__FILE__))
|
@@ -1,6 +1,6 @@
|
|
1
1
|
module ActiveRecord
|
2
2
|
module ConnectionAdapters
|
3
|
-
module
|
3
|
+
module PostGIS
|
4
4
|
module SchemaStatements
|
5
5
|
# override
|
6
6
|
# pass table_name to #new_column
|
@@ -74,7 +74,7 @@ module ActiveRecord
|
|
74
74
|
|
75
75
|
# override
|
76
76
|
def create_table_definition(name, temporary, options, as = nil)
|
77
|
-
|
77
|
+
PostGIS::TableDefinition.new(native_database_types, name, temporary, options, as)
|
78
78
|
end
|
79
79
|
|
80
80
|
# memoize hash of column infos for tables
|
data/lib/active_record/connection_adapters/{postgis_adapter → postgis}/spatial_column_info.rb
RENAMED
@@ -1,6 +1,6 @@
|
|
1
1
|
module ActiveRecord # :nodoc:
|
2
2
|
module ConnectionAdapters # :nodoc:
|
3
|
-
module
|
3
|
+
module PostGIS
|
4
4
|
# Do spatial sql queries for column info and memoize that info.
|
5
5
|
class SpatialColumnInfo
|
6
6
|
def initialize(adapter, table_name)
|
@@ -32,7 +32,7 @@ module ActiveRecord # :nodoc:
|
|
32
32
|
|
33
33
|
# do not query the database for non-spatial columns/tables
|
34
34
|
def get(column_name, type)
|
35
|
-
return unless
|
35
|
+
return unless PostGISAdapter.spatial_column_options(type.to_sym)
|
36
36
|
@spatial_column_info ||= all
|
37
37
|
@spatial_column_info[column_name]
|
38
38
|
end
|
data/lib/active_record/connection_adapters/{postgis_adapter → postgis}/spatial_table_definition.rb
RENAMED
@@ -1,17 +1,12 @@
|
|
1
1
|
module ActiveRecord # :nodoc:
|
2
2
|
module ConnectionAdapters # :nodoc:
|
3
|
-
module
|
3
|
+
module PostGIS # :nodoc:
|
4
4
|
class TableDefinition < PostgreSQL::TableDefinition # :nodoc:
|
5
|
+
include ColumnMethods
|
5
6
|
|
6
|
-
|
7
|
-
@adapter = adapter
|
8
|
-
@spatial_columns_hash = {}
|
9
|
-
super(types, name, temporary, options, as)
|
10
|
-
end
|
11
|
-
|
12
|
-
# super: https://github.com/rails/rails/blob/master/activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb#L320
|
7
|
+
# super: https://github.com/rails/rails/blob/master/activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb
|
13
8
|
def new_column_definition(name, type, options)
|
14
|
-
if (info =
|
9
|
+
if (info = PostGISAdapter.spatial_column_options(type.to_sym))
|
15
10
|
if (limit = options.delete(:limit))
|
16
11
|
options.merge!(limit) if limit.is_a?(::Hash)
|
17
12
|
end
|
@@ -30,7 +25,6 @@ module ActiveRecord # :nodoc:
|
|
30
25
|
column.srid = options[:srid]
|
31
26
|
column.has_z = options[:has_z]
|
32
27
|
column.has_m = options[:has_m]
|
33
|
-
(column.geographic? ? @columns_hash : @spatial_columns_hash)[name] = column
|
34
28
|
else
|
35
29
|
column = super(name, type, options)
|
36
30
|
end
|
@@ -38,56 +32,11 @@ module ActiveRecord # :nodoc:
|
|
38
32
|
column
|
39
33
|
end
|
40
34
|
|
41
|
-
def non_geographic_spatial_columns
|
42
|
-
@spatial_columns_hash.values
|
43
|
-
end
|
44
|
-
|
45
|
-
def spatial(name, options = {})
|
46
|
-
raise "You must set a type. For example: 't.spatial type: :st_point'" unless options[:type]
|
47
|
-
column(name, options[:type], options)
|
48
|
-
end
|
49
|
-
|
50
|
-
def geography(name, options = {})
|
51
|
-
column(name, :geography, options)
|
52
|
-
end
|
53
|
-
|
54
|
-
def geometry(name, options = {})
|
55
|
-
column(name, :geometry, options)
|
56
|
-
end
|
57
|
-
|
58
|
-
def geometry_collection(name, options = {})
|
59
|
-
column(name, :geometry_collection, options)
|
60
|
-
end
|
61
|
-
|
62
|
-
def line_string(name, options = {})
|
63
|
-
column(name, :line_string, options)
|
64
|
-
end
|
65
|
-
|
66
|
-
def multi_line_string(name, options = {})
|
67
|
-
column(name, :multi_line_string, options)
|
68
|
-
end
|
69
|
-
|
70
|
-
def multi_point(name, options = {})
|
71
|
-
column(name, :multi_point, options)
|
72
|
-
end
|
73
|
-
|
74
|
-
def multi_polygon(name, options = {})
|
75
|
-
column(name, :multi_polygon, options)
|
76
|
-
end
|
77
|
-
|
78
|
-
def st_point(name, options = {})
|
79
|
-
column(name, :st_point, options)
|
80
|
-
end
|
81
|
-
|
82
|
-
def st_polygon(name, options = {})
|
83
|
-
column(name, :st_polygon, options)
|
84
|
-
end
|
85
|
-
|
86
35
|
private
|
87
36
|
|
88
37
|
def create_column_definition(name, type)
|
89
|
-
if
|
90
|
-
|
38
|
+
if PostGISAdapter.spatial_column_options(type.to_sym)
|
39
|
+
PostGIS::ColumnDefinition.new(name, type)
|
91
40
|
else
|
92
41
|
super
|
93
42
|
end
|
@@ -143,7 +92,7 @@ module ActiveRecord # :nodoc:
|
|
143
92
|
if @srid
|
144
93
|
@srid.to_i
|
145
94
|
else
|
146
|
-
geographic? ? 4326 : PostGISAdapter::
|
95
|
+
geographic? ? 4326 : PostGISAdapter::DEFAULT_SRID
|
147
96
|
end
|
148
97
|
end
|
149
98
|
|
@@ -5,23 +5,87 @@
|
|
5
5
|
|
6
6
|
require 'active_record/connection_adapters/postgresql_adapter'
|
7
7
|
require 'rgeo/active_record'
|
8
|
-
require 'active_record/connection_adapters/
|
9
|
-
require 'active_record/connection_adapters/
|
10
|
-
require 'active_record/connection_adapters/
|
11
|
-
require 'active_record/connection_adapters/
|
12
|
-
require 'active_record/connection_adapters/
|
13
|
-
require 'active_record/connection_adapters/
|
14
|
-
require 'active_record/connection_adapters/
|
15
|
-
require 'active_record/connection_adapters/
|
16
|
-
require 'active_record/connection_adapters/
|
17
|
-
require 'active_record/connection_adapters/
|
18
|
-
require 'active_record/connection_adapters/
|
8
|
+
require 'active_record/connection_adapters/postgis/version'
|
9
|
+
require 'active_record/connection_adapters/postgis/column_methods'
|
10
|
+
require 'active_record/connection_adapters/postgis/schema_statements'
|
11
|
+
require 'active_record/connection_adapters/postgis/spatial_column_info'
|
12
|
+
require 'active_record/connection_adapters/postgis/spatial_table_definition'
|
13
|
+
require 'active_record/connection_adapters/postgis/spatial_column'
|
14
|
+
require 'active_record/connection_adapters/postgis/arel_tosql'
|
15
|
+
require 'active_record/connection_adapters/postgis/setup'
|
16
|
+
require 'active_record/connection_adapters/postgis/oid/spatial'
|
17
|
+
require 'active_record/connection_adapters/postgis/create_connection'
|
18
|
+
require 'active_record/connection_adapters/postgis/postgis_database_tasks'
|
19
19
|
|
20
|
-
|
21
|
-
::ActiveRecord::ConnectionAdapters::PostGISAdapter.initial_setup
|
20
|
+
::ActiveRecord::ConnectionAdapters::PostGIS.initial_setup
|
22
21
|
|
23
22
|
if defined?(::Rails::Railtie)
|
24
|
-
load ::File.expand_path('
|
23
|
+
load ::File.expand_path('postgis/railtie.rb', ::File.dirname(__FILE__))
|
25
24
|
end
|
26
25
|
|
27
26
|
# :startdoc:
|
27
|
+
|
28
|
+
module ActiveRecord
|
29
|
+
module ConnectionAdapters
|
30
|
+
class PostGISAdapter < PostgreSQLAdapter
|
31
|
+
include PostGIS::SchemaStatements
|
32
|
+
|
33
|
+
SPATIAL_COLUMN_OPTIONS =
|
34
|
+
{
|
35
|
+
geography: { geographic: true },
|
36
|
+
geometry: {},
|
37
|
+
geometry_collection: {},
|
38
|
+
line_string: {},
|
39
|
+
multi_line_string: {},
|
40
|
+
multi_point: {},
|
41
|
+
multi_polygon: {},
|
42
|
+
spatial: {},
|
43
|
+
st_point: {},
|
44
|
+
st_polygon: {},
|
45
|
+
}
|
46
|
+
|
47
|
+
# http://postgis.17.x6.nabble.com/Default-SRID-td5001115.html
|
48
|
+
DEFAULT_SRID = 0
|
49
|
+
|
50
|
+
def initialize(*args)
|
51
|
+
super
|
52
|
+
@visitor = Arel::Visitors::PostGIS.new(self)
|
53
|
+
end
|
54
|
+
|
55
|
+
def adapter_name
|
56
|
+
"PostGIS".freeze
|
57
|
+
end
|
58
|
+
|
59
|
+
def self.spatial_column_options(key)
|
60
|
+
SPATIAL_COLUMN_OPTIONS[key]
|
61
|
+
end
|
62
|
+
|
63
|
+
def postgis_lib_version
|
64
|
+
@postgis_lib_version ||= select_value("SELECT PostGIS_Lib_Version()")
|
65
|
+
end
|
66
|
+
|
67
|
+
def default_srid
|
68
|
+
DEFAULT_SRID
|
69
|
+
end
|
70
|
+
|
71
|
+
def srs_database_columns
|
72
|
+
{
|
73
|
+
auth_name_column: 'auth_name',
|
74
|
+
auth_srid_column: 'auth_srid',
|
75
|
+
proj4text_column: 'proj4text',
|
76
|
+
srtext_column: 'srtext',
|
77
|
+
}
|
78
|
+
end
|
79
|
+
|
80
|
+
def quote(value, column = nil)
|
81
|
+
if RGeo::Feature::Geometry.check_type(value)
|
82
|
+
"'#{ RGeo::WKRep::WKBGenerator.new(hex_format: true, type_format: :ewkb, emit_ewkb_srid: true).generate(value) }'"
|
83
|
+
elsif value.is_a?(RGeo::Cartesian::BoundingBox)
|
84
|
+
"'#{ value.min_x },#{ value.min_y },#{ value.max_x },#{ value.max_y }'::box"
|
85
|
+
else
|
86
|
+
super
|
87
|
+
end
|
88
|
+
end
|
89
|
+
end
|
90
|
+
end
|
91
|
+
end
|
data/test/basic_test.rb
CHANGED
@@ -3,7 +3,7 @@ require 'test_helper'
|
|
3
3
|
class BasicTest < ActiveSupport::TestCase # :nodoc:
|
4
4
|
|
5
5
|
def test_version
|
6
|
-
refute_nil ActiveRecord::ConnectionAdapters::
|
6
|
+
refute_nil ActiveRecord::ConnectionAdapters::PostGIS::VERSION
|
7
7
|
end
|
8
8
|
|
9
9
|
def test_postgis_available
|
data/test/ddl_test.rb
CHANGED
@@ -13,7 +13,7 @@ class DDLTest < ActiveSupport::TestCase # :nodoc:
|
|
13
13
|
:st_point,
|
14
14
|
:st_polygon,
|
15
15
|
].each do |type|
|
16
|
-
assert ActiveRecord::ConnectionAdapters::PostGISAdapter
|
16
|
+
assert ActiveRecord::ConnectionAdapters::PostGISAdapter.spatial_column_options(type), type
|
17
17
|
end
|
18
18
|
end
|
19
19
|
|
@@ -109,21 +109,30 @@ class DDLTest < ActiveSupport::TestCase # :nodoc:
|
|
109
109
|
t.column('latlon', :geometry)
|
110
110
|
end
|
111
111
|
klass.connection.change_table(:spatial_models) do |t|
|
112
|
+
t.st_point('geom3', srid: 4326, geographic: true)
|
112
113
|
t.column('geom2', :st_point, srid: 4326, geographic: true)
|
113
114
|
t.column('name', :string)
|
114
115
|
end
|
115
116
|
klass.reset_column_information
|
116
117
|
assert_equal 1, count_geometry_columns
|
117
|
-
|
118
|
-
|
119
|
-
assert_equal
|
120
|
-
assert_equal
|
121
|
-
assert_equal
|
122
|
-
|
123
|
-
assert_equal
|
124
|
-
assert_equal
|
125
|
-
|
126
|
-
assert_equal
|
118
|
+
cols = klass.columns
|
119
|
+
# latlon
|
120
|
+
assert_equal RGeo::Feature::Geometry, cols[-4].geometric_type
|
121
|
+
assert_equal 0, cols[-4].srid
|
122
|
+
assert_equal true, cols[-4].spatial?
|
123
|
+
# geom3
|
124
|
+
assert_equal RGeo::Feature::Point, cols[-3].geometric_type
|
125
|
+
assert_equal 4326, cols[-3].srid
|
126
|
+
assert_equal true, cols[-3].geographic?
|
127
|
+
assert_equal true, cols[-3].spatial?
|
128
|
+
# geom2
|
129
|
+
assert_equal RGeo::Feature::Point, cols[-2].geometric_type
|
130
|
+
assert_equal 4326, cols[-2].srid
|
131
|
+
assert_equal true, cols[-2].geographic?
|
132
|
+
assert_equal true, cols[-2].spatial?
|
133
|
+
# name
|
134
|
+
assert_nil cols[-1].geometric_type
|
135
|
+
assert_equal false, cols[-1].spatial?
|
127
136
|
end
|
128
137
|
|
129
138
|
def test_drop_geometry_column
|
@@ -136,11 +145,11 @@ class DDLTest < ActiveSupport::TestCase # :nodoc:
|
|
136
145
|
end
|
137
146
|
klass.reset_column_information
|
138
147
|
assert_equal 1, count_geometry_columns
|
139
|
-
|
140
|
-
assert_equal RGeo::Feature::Geometry,
|
141
|
-
assert_equal 'latlon',
|
142
|
-
assert_equal 0,
|
143
|
-
assert_equal false,
|
148
|
+
cols = klass.columns
|
149
|
+
assert_equal RGeo::Feature::Geometry, cols[-1].geometric_type
|
150
|
+
assert_equal 'latlon', cols[-1].name
|
151
|
+
assert_equal 0, cols[-1].srid
|
152
|
+
assert_equal false, cols[-1].geographic?
|
144
153
|
end
|
145
154
|
|
146
155
|
def test_drop_geography_column
|
@@ -230,7 +239,7 @@ class DDLTest < ActiveSupport::TestCase # :nodoc:
|
|
230
239
|
end
|
231
240
|
klass.reset_column_information
|
232
241
|
# `all` queries column info from the database - it should not be called when klass.columns is called
|
233
|
-
ActiveRecord::ConnectionAdapters::
|
242
|
+
ActiveRecord::ConnectionAdapters::PostGIS::SpatialColumnInfo.any_instance.expects(:all).never
|
234
243
|
# first column is id, second is name
|
235
244
|
refute klass.columns[1].spatial?
|
236
245
|
assert_nil klass.columns[1].has_z
|
data/test/tasks_test.rb
CHANGED
@@ -145,13 +145,13 @@ class TasksTest < ActiveSupport::TestCase # :nodoc:
|
|
145
145
|
FileUtils.rm_f(tmp_sql_filename)
|
146
146
|
FileUtils.mkdir_p(::File.dirname(tmp_sql_filename))
|
147
147
|
drop_db_if_exists
|
148
|
-
ActiveRecord::ConnectionAdapters::
|
148
|
+
ActiveRecord::ConnectionAdapters::PostGIS::PostGISDatabaseTasks.new(NEW_CONNECTION).create
|
149
149
|
rescue ActiveRecord::Tasks::DatabaseAlreadyExists
|
150
150
|
# ignore
|
151
151
|
end
|
152
152
|
|
153
153
|
def drop_db_if_exists
|
154
|
-
ActiveRecord::ConnectionAdapters::
|
154
|
+
ActiveRecord::ConnectionAdapters::PostGIS::PostGISDatabaseTasks.new(NEW_CONNECTION).drop
|
155
155
|
rescue ActiveRecord::Tasks::DatabaseAlreadyExists
|
156
156
|
# ignore
|
157
157
|
end
|
data/test/type_test.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: activerecord-postgis-adapter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.0.0
|
4
|
+
version: 3.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Daniel Azuma, Tee Parham
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-05-
|
11
|
+
date: 2015-05-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|
@@ -30,14 +30,14 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '4.0'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
40
|
+
version: '4.0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rake
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -95,7 +95,7 @@ dependencies:
|
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '1.0'
|
97
97
|
description: ActiveRecord connection adapter for PostGIS. It is based on the stock
|
98
|
-
PostgreSQL adapter,
|
98
|
+
PostgreSQL adapter, and adds built-in support for the spatial extensions provided
|
99
99
|
by PostGIS. It uses the RGeo library to represent spatial data in Ruby.
|
100
100
|
email: dazuma@gmail.com, parhameter@gmail.com
|
101
101
|
executables: []
|
@@ -103,22 +103,21 @@ extensions: []
|
|
103
103
|
extra_rdoc_files: []
|
104
104
|
files:
|
105
105
|
- LICENSE.txt
|
106
|
+
- lib/active_record/connection_adapters/postgis/arel_tosql.rb
|
107
|
+
- lib/active_record/connection_adapters/postgis/column_methods.rb
|
108
|
+
- lib/active_record/connection_adapters/postgis/create_connection.rb
|
109
|
+
- lib/active_record/connection_adapters/postgis/databases.rake
|
110
|
+
- lib/active_record/connection_adapters/postgis/oid/spatial.rb
|
111
|
+
- lib/active_record/connection_adapters/postgis/postgis_database_tasks.rb
|
112
|
+
- lib/active_record/connection_adapters/postgis/railtie.rb
|
113
|
+
- lib/active_record/connection_adapters/postgis/schema_statements.rb
|
114
|
+
- lib/active_record/connection_adapters/postgis/setup.rb
|
115
|
+
- lib/active_record/connection_adapters/postgis/spatial_column.rb
|
116
|
+
- lib/active_record/connection_adapters/postgis/spatial_column_info.rb
|
117
|
+
- lib/active_record/connection_adapters/postgis/spatial_table_definition.rb
|
118
|
+
- lib/active_record/connection_adapters/postgis/version.rb
|
106
119
|
- lib/active_record/connection_adapters/postgis_adapter.rb
|
107
|
-
- lib/active_record/connection_adapters/postgis_adapter/arel_tosql.rb
|
108
|
-
- lib/active_record/connection_adapters/postgis_adapter/create_connection.rb
|
109
|
-
- lib/active_record/connection_adapters/postgis_adapter/databases.rake
|
110
|
-
- lib/active_record/connection_adapters/postgis_adapter/main_adapter.rb
|
111
|
-
- lib/active_record/connection_adapters/postgis_adapter/oid/spatial.rb
|
112
|
-
- lib/active_record/connection_adapters/postgis_adapter/postgis_database_tasks.rb
|
113
|
-
- lib/active_record/connection_adapters/postgis_adapter/railtie.rb
|
114
|
-
- lib/active_record/connection_adapters/postgis_adapter/schema_statements.rb
|
115
|
-
- lib/active_record/connection_adapters/postgis_adapter/setup.rb
|
116
|
-
- lib/active_record/connection_adapters/postgis_adapter/spatial_column.rb
|
117
|
-
- lib/active_record/connection_adapters/postgis_adapter/spatial_column_info.rb
|
118
|
-
- lib/active_record/connection_adapters/postgis_adapter/spatial_table_definition.rb
|
119
|
-
- lib/active_record/connection_adapters/postgis_adapter/version.rb
|
120
120
|
- lib/activerecord-postgis-adapter.rb
|
121
|
-
- lib/activerecord/postgis/adapter.rb
|
122
121
|
- test/basic_test.rb
|
123
122
|
- test/database.yml
|
124
123
|
- test/ddl_test.rb
|
@@ -143,12 +142,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
143
142
|
version: 1.9.3
|
144
143
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
145
144
|
requirements:
|
146
|
-
- - "
|
145
|
+
- - ">="
|
147
146
|
- !ruby/object:Gem::Version
|
148
|
-
version:
|
147
|
+
version: '0'
|
149
148
|
requirements: []
|
150
149
|
rubyforge_project:
|
151
|
-
rubygems_version: 2.4.
|
150
|
+
rubygems_version: 2.4.7
|
152
151
|
signing_key:
|
153
152
|
specification_version: 4
|
154
153
|
summary: ActiveRecord adapter for PostGIS, based on RGeo.
|
@@ -162,4 +161,3 @@ test_files:
|
|
162
161
|
- test/tasks_test.rb
|
163
162
|
- test/test_helper.rb
|
164
163
|
- test/type_test.rb
|
165
|
-
has_rdoc:
|
@@ -1,17 +0,0 @@
|
|
1
|
-
# :stopdoc:
|
2
|
-
|
3
|
-
namespace :db do
|
4
|
-
namespace :gis do
|
5
|
-
desc "Setup PostGIS data in the database"
|
6
|
-
task :setup => [:load_config] do
|
7
|
-
environments_ = [::Rails.env]
|
8
|
-
environments_ << 'test' if ::Rails.env.development?
|
9
|
-
configs_ = ::ActiveRecord::Base.configurations.values_at(*environments_).compact.reject{ |config_| config_['database'].blank? }
|
10
|
-
configs_.each do |config_|
|
11
|
-
::ActiveRecord::ConnectionAdapters::PostGISAdapter::PostGISDatabaseTasks.new(config_).setup_gis
|
12
|
-
end
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
# :startdoc:
|
@@ -1,70 +0,0 @@
|
|
1
|
-
module ActiveRecord # :nodoc:
|
2
|
-
module ConnectionAdapters # :nodoc:
|
3
|
-
module PostGISAdapter # :nodoc:
|
4
|
-
class MainAdapter < PostgreSQLAdapter # :nodoc:
|
5
|
-
include PostGISAdapter::SchemaStatements
|
6
|
-
|
7
|
-
SPATIAL_COLUMN_OPTIONS =
|
8
|
-
{
|
9
|
-
geography: { geographic: true },
|
10
|
-
geometry: {},
|
11
|
-
geometry_collection: {},
|
12
|
-
line_string: {},
|
13
|
-
multi_line_string: {},
|
14
|
-
multi_point: {},
|
15
|
-
multi_polygon: {},
|
16
|
-
spatial: {},
|
17
|
-
st_point: {},
|
18
|
-
st_polygon: {},
|
19
|
-
}
|
20
|
-
|
21
|
-
# http://postgis.17.x6.nabble.com/Default-SRID-td5001115.html
|
22
|
-
DEFAULT_SRID = 0
|
23
|
-
|
24
|
-
def initialize(*args)
|
25
|
-
super
|
26
|
-
@visitor = Arel::Visitors::PostGIS.new(self)
|
27
|
-
end
|
28
|
-
|
29
|
-
# def schema_creation
|
30
|
-
# PostGISAdapter::SchemaCreation.new self
|
31
|
-
# end
|
32
|
-
|
33
|
-
def adapter_name
|
34
|
-
"PostGIS".freeze
|
35
|
-
end
|
36
|
-
|
37
|
-
def self.spatial_column_options(key)
|
38
|
-
SPATIAL_COLUMN_OPTIONS[key]
|
39
|
-
end
|
40
|
-
|
41
|
-
def postgis_lib_version
|
42
|
-
@postgis_lib_version ||= select_value("SELECT PostGIS_Lib_Version()")
|
43
|
-
end
|
44
|
-
|
45
|
-
def default_srid
|
46
|
-
DEFAULT_SRID
|
47
|
-
end
|
48
|
-
|
49
|
-
def srs_database_columns
|
50
|
-
{
|
51
|
-
auth_name_column: 'auth_name',
|
52
|
-
auth_srid_column: 'auth_srid',
|
53
|
-
proj4text_column: 'proj4text',
|
54
|
-
srtext_column: 'srtext',
|
55
|
-
}
|
56
|
-
end
|
57
|
-
|
58
|
-
def quote(value, column = nil)
|
59
|
-
if RGeo::Feature::Geometry.check_type(value)
|
60
|
-
"'#{ RGeo::WKRep::WKBGenerator.new(hex_format: true, type_format: :ewkb, emit_ewkb_srid: true).generate(value) }'"
|
61
|
-
elsif value.is_a?(RGeo::Cartesian::BoundingBox)
|
62
|
-
"'#{ value.min_x },#{ value.min_y },#{ value.max_x },#{ value.max_y }'::box"
|
63
|
-
else
|
64
|
-
super
|
65
|
-
end
|
66
|
-
end
|
67
|
-
end
|
68
|
-
end
|
69
|
-
end
|
70
|
-
end
|
@@ -1 +0,0 @@
|
|
1
|
-
require 'active_record/connection_adapters/postgis_adapter.rb'
|