activerecord-postgis-adapter 7.0.0 → 8.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: bb1e1b34ad600caf80e784c5ed95979d2712fe102d7845814d7258cec6605425
4
- data.tar.gz: 6c9dcf403ec396a9482a9d88a02fd4282d6c9c50fbcc84d2581927f2bbf570d0
3
+ metadata.gz: 88b08c026151d4f1a930e5fc3299bbf1898a20df441f86b57cde0aabcd29b4cb
4
+ data.tar.gz: 823b5b9511687fa663273242d5cce9d490610b813df495ad81b43c241c3b443e
5
5
  SHA512:
6
- metadata.gz: be97e239ddd7b98c4b96616e456250c2ef624bf33517e02623d69ac1a4f94f64f46ecc1e0bf16afd5c036e36e6b3cba68f872ad261ebce44ef07a3b1661b21b5
7
- data.tar.gz: 48d54259d8027b81ad8419bef0d66b1f73fa5145df8dd001bab340049b28c331bf7474f3614076b9de2f0626fc80a3da19cd1267519e9857b4f19d93008e416d
6
+ metadata.gz: f851b74ce6e9da1a4aac3bfcf8acbda44e563f049de04eaf832a8b49cf2acc41cf98495a9ff123786d9bd871658d97637453ae6d845e55f0bf4f5074db01eab7
7
+ data.tar.gz: 7e47c25711cf8ee49c62a8ad89f9d0b0e5525bf4fb1b45ddb185db6477d0e114a4868a50c612e9a51e880499213cb6cb82f051adf993618eb0978cc0d0f45dc7
@@ -10,7 +10,11 @@ module ActiveRecord # :nodoc:
10
10
  module ConnectionHandling # :nodoc:
11
11
  if RUBY_ENGINE == "jruby"
12
12
 
13
+ # modified from https://github.com/jruby/activerecord-jdbc-adapter/blob/master/lib/arjdbc/postgresql/connection_methods.rb#L3
13
14
  def postgis_connection(config)
15
+ config = config.deep_dup
16
+ config = symbolize_keys_if_necessary(config)
17
+
14
18
  config[:adapter_class] = ConnectionAdapters::PostGISAdapter
15
19
  postgresql_connection(config)
16
20
  end
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ActiveRecord
4
+ module ConnectionAdapters # :nodoc:
5
+ module PostGIS
6
+ module DatabaseStatements
7
+ def truncate_tables(*table_names)
8
+ table_names -= ["spatial_ref_sys"]
9
+ super(*table_names)
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -4,16 +4,17 @@ module ActiveRecord
4
4
  module ConnectionAdapters
5
5
  module PostGIS
6
6
  module OID
7
+ # OID used to represent geometry/geography database types and attributes.
8
+ #
9
+ # Accepts `geo_type`, `srid`, `has_z`, `has_m`, and `geographic` as parameters.
10
+ # Responsible for parsing sql_types returned from the database and WKT features.
7
11
  class Spatial < Type::Value
8
- # sql_type is a string that comes from the database definition
9
- # examples:
10
- # "geometry(Point,4326)"
11
- # "geography(Point,4326)"
12
- # "geometry(Polygon,4326) NOT NULL"
13
- # "geometry(Geography,4326)"
14
- def initialize(oid, sql_type)
15
- @sql_type = sql_type
16
- @geo_type, @srid, @has_z, @has_m = self.class.parse_sql_type(sql_type)
12
+ def initialize(geo_type: "geometry", srid: 0, has_z: false, has_m: false, geographic: false)
13
+ @geo_type = geo_type
14
+ @srid = srid
15
+ @has_z = has_z
16
+ @has_m = has_m
17
+ @geographic = geographic
17
18
  end
18
19
 
19
20
  # sql_type: geometry, geometry(Point), geometry(Point,4326), ...
@@ -43,7 +44,9 @@ module ActiveRecord
43
44
  # otherType(a,b)
44
45
  geo_type = sql_type
45
46
  end
46
- [geo_type, srid, has_z, has_m]
47
+ geographic = sql_type.match?(/geography/)
48
+
49
+ [geo_type, srid, has_z, has_m, geographic]
47
50
  end
48
51
 
49
52
  def spatial_factory
@@ -53,16 +56,12 @@ module ActiveRecord
53
56
  )
54
57
  end
55
58
 
56
- def geographic?
57
- @sql_type =~ /geography/
58
- end
59
-
60
59
  def spatial?
61
60
  true
62
61
  end
63
62
 
64
63
  def type
65
- geographic? ? :geography : :geometry
64
+ @geographic ? :geography : :geometry
66
65
  end
67
66
 
68
67
  # support setting an RGeo object or a WKT string
@@ -83,26 +83,6 @@ module ActiveRecord
83
83
  @spatial_column_info ||= {}
84
84
  @spatial_column_info[table_name.to_sym] ||= SpatialColumnInfo.new(self, table_name.to_s)
85
85
  end
86
-
87
- def initialize_type_map(map = type_map)
88
- %w(
89
- geography
90
- geometry
91
- geometry_collection
92
- line_string
93
- multi_line_string
94
- multi_point
95
- multi_polygon
96
- st_point
97
- st_polygon
98
- ).each do |geo_type|
99
- map.register_type(geo_type) do |oid, _, sql_type|
100
- OID::Spatial.new(oid, sql_type)
101
- end
102
- end
103
-
104
- super
105
- end
106
86
  end
107
87
  end
108
88
  end
@@ -32,13 +32,11 @@ module ActiveRecord # :nodoc:
32
32
  end
33
33
  super(name, default, sql_type_metadata, null, default_function,
34
34
  collation: collation, comment: comment, serial: serial)
35
- if spatial?
36
- if @srid
37
- @limit = { srid: @srid, type: to_type_name(geometric_type) }
38
- @limit[:has_z] = true if @has_z
39
- @limit[:has_m] = true if @has_m
40
- @limit[:geographic] = true if @geographic
41
- end
35
+ if spatial? && @srid
36
+ @limit = { srid: @srid, type: to_type_name(geometric_type) }
37
+ @limit[:has_z] = true if @has_z
38
+ @limit[:has_m] = true if @has_m
39
+ @limit[:geographic] = true if @geographic
42
40
  end
43
41
  end
44
42
 
@@ -67,15 +65,16 @@ module ActiveRecord # :nodoc:
67
65
  end
68
66
 
69
67
  def build_from_sql_type(sql_type)
70
- geo_type, @srid, @has_z, @has_m = OID::Spatial.parse_sql_type(sql_type)
68
+ geo_type, @srid, @has_z, @has_m, @geographic = OID::Spatial.parse_sql_type(sql_type)
71
69
  set_geometric_type_from_name(geo_type)
72
70
  end
73
71
 
74
72
  def to_type_name(geometric_type)
75
73
  name = geometric_type.type_name.underscore
76
- if name == "point"
74
+ case name
75
+ when "point"
77
76
  "st_point"
78
- elsif name == "polygon"
77
+ when "polygon"
79
78
  "st_polygon"
80
79
  else
81
80
  name
@@ -21,7 +21,7 @@ module ActiveRecord # :nodoc:
21
21
  dimension = row[1].to_i
22
22
  has_m = !!(type =~ /m$/i)
23
23
  type.sub!(/m$/, "")
24
- has_z = dimension > 3 || dimension == 3 && !has_m
24
+ has_z = dimension > 3 || (dimension == 3 && !has_m)
25
25
  result[name] = {
26
26
  dimension: dimension,
27
27
  has_m: has_m,
@@ -9,8 +9,8 @@ module ActiveRecord # :nodoc:
9
9
  # super: https://github.com/rails/rails/blob/master/activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb
10
10
  def new_column_definition(name, type, **options)
11
11
  if (info = PostGISAdapter.spatial_column_options(type.to_sym))
12
- if (limit = options.delete(:limit))
13
- options.merge!(limit) if limit.is_a?(::Hash)
12
+ if (limit = options.delete(:limit)) && limit.is_a?(::Hash)
13
+ options.merge!(limit)
14
14
  end
15
15
 
16
16
  geo_type = ColumnDefinitionUtils.geo_type(options[:type] || type || info[:type])
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ActiveRecord
4
+ module ConnectionAdapters
5
+ module PostGIS
6
+ module Type
7
+ # Look for :postgis types first, then check for :postgresql
8
+ # types to simulate a kind of Type inheritance.
9
+ def lookup(*args, adapter: current_adapter_name, **kwargs)
10
+ super(*args, adapter: adapter, **kwargs)
11
+ rescue ArgumentError => e
12
+ raise e unless current_adapter_name == :postgis
13
+
14
+ super(*args, adapter: :postgresql, **kwargs)
15
+ end
16
+ end
17
+ end
18
+ end
19
+
20
+ # Type uses `class << self` syntax so we have to prepend to the singleton_class
21
+ Type.singleton_class.prepend(ActiveRecord::ConnectionAdapters::PostGIS::Type)
22
+ end
@@ -3,7 +3,7 @@
3
3
  module ActiveRecord
4
4
  module ConnectionAdapters
5
5
  module PostGIS
6
- VERSION = "7.0.0"
6
+ VERSION = "8.0.0"
7
7
  end
8
8
  end
9
9
  end
@@ -12,27 +12,20 @@ require "active_record/connection_adapters/postgresql_adapter"
12
12
  require "active_record/connection_adapters/postgis/version"
13
13
  require "active_record/connection_adapters/postgis/column_methods"
14
14
  require "active_record/connection_adapters/postgis/schema_statements"
15
+ require "active_record/connection_adapters/postgis/database_statements"
15
16
  require "active_record/connection_adapters/postgis/spatial_column_info"
16
17
  require "active_record/connection_adapters/postgis/spatial_table_definition"
17
18
  require "active_record/connection_adapters/postgis/spatial_column"
18
19
  require "active_record/connection_adapters/postgis/arel_tosql"
19
- require "active_record/connection_adapters/postgis/setup"
20
20
  require "active_record/connection_adapters/postgis/oid/spatial"
21
+ require "active_record/connection_adapters/postgis/type" # has to be after oid/*
21
22
  require "active_record/connection_adapters/postgis/create_connection"
22
- require "active_record/connection_adapters/postgis/postgis_database_tasks"
23
-
24
- ActiveRecord::ConnectionAdapters::PostGIS.initial_setup
25
-
26
- if defined?(Rails::Railtie)
27
- require "active_record/connection_adapters/postgis/railtie"
28
- end
29
-
30
23
  # :startdoc:
31
24
 
32
25
  module ActiveRecord
33
26
  module ConnectionAdapters
34
27
  class PostGISAdapter < PostgreSQLAdapter
35
- ADAPTER_NAME = 'PostGIS'.freeze
28
+ ADAPTER_NAME = 'PostGIS'
36
29
 
37
30
  SPATIAL_COLUMN_OPTIONS =
38
31
  {
@@ -52,6 +45,7 @@ module ActiveRecord
52
45
  DEFAULT_SRID = 0
53
46
 
54
47
  include PostGIS::SchemaStatements
48
+ include PostGIS::DatabaseStatements
55
49
 
56
50
  def arel_visitor # :nodoc:
57
51
  Arel::Visitors::PostGIS.new(self)
@@ -69,6 +63,35 @@ module ActiveRecord
69
63
  DEFAULT_SRID
70
64
  end
71
65
 
66
+ class << self
67
+ def initialize_type_map(map = type_map)
68
+ %w[
69
+ geography
70
+ geometry
71
+ geometry_collection
72
+ line_string
73
+ multi_line_string
74
+ multi_point
75
+ multi_polygon
76
+ st_point
77
+ st_polygon
78
+ ].each do |geo_type|
79
+ map.register_type(geo_type) do |_, _, sql_type|
80
+ # sql_type is a string that comes from the database definition
81
+ # examples:
82
+ # "geometry(Point,4326)"
83
+ # "geography(Point,4326)"
84
+ # "geometry(Polygon,4326) NOT NULL"
85
+ # "geometry(Geography,4326)"
86
+ geo_type, srid, has_z, has_m, geographic = PostGIS::OID::Spatial.parse_sql_type(sql_type)
87
+ PostGIS::OID::Spatial.new(geo_type: geo_type, srid: srid, has_z: has_z, has_m: has_m, geographic: geographic)
88
+ end
89
+ end
90
+
91
+ super
92
+ end
93
+ end
94
+
72
95
  def srs_database_columns
73
96
  {
74
97
  auth_name_column: "auth_name",
@@ -87,6 +110,57 @@ module ActiveRecord
87
110
  super
88
111
  end
89
112
  end
113
+
114
+ def quote_default_expression(value, column)
115
+ if column.type == :geography || column.type == :geometry
116
+ quote(value)
117
+ else
118
+ super
119
+ end
120
+ end
121
+
122
+ # PostGIS specific types
123
+ [
124
+ :geography,
125
+ :geometry,
126
+ :geometry_collection,
127
+ :line_string,
128
+ :multi_line_string,
129
+ :multi_point,
130
+ :multi_polygon,
131
+ :st_point,
132
+ :st_polygon,
133
+ ].each do |geo_type|
134
+ ActiveRecord::Type.register(geo_type, PostGIS::OID::Spatial, adapter: :postgis)
135
+ end
90
136
  end
91
137
  end
138
+ SchemaDumper.ignore_tables |= %w[
139
+ geography_columns
140
+ geometry_columns
141
+ layer
142
+ raster_columns
143
+ raster_overviews
144
+ spatial_ref_sys
145
+ topology
146
+ ]
147
+ Tasks::DatabaseTasks.register_task(/postgis/, "ActiveRecord::Tasks::PostgreSQLDatabaseTasks")
148
+ end
149
+
150
+ # if using JRUBY, create ArJdbc::PostGIS module
151
+ # and prepend it to the PostgreSQL adapter since
152
+ # it is the default adapter_spec.
153
+ # see: https://github.com/jruby/activerecord-jdbc-adapter/blob/master/lib/arjdbc/postgresql/adapter.rb#27
154
+ if RUBY_ENGINE == "jruby"
155
+ module ArJdbc
156
+ module PostGIS
157
+ ADAPTER_NAME = 'PostGIS'
158
+
159
+ def adapter_name
160
+ ADAPTER_NAME
161
+ end
162
+ end
163
+ end
164
+
165
+ ArJdbc::PostgreSQL.prepend(ArJdbc::PostGIS)
92
166
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: activerecord-postgis-adapter
3
3
  version: !ruby/object:Gem::Version
4
- version: 7.0.0
4
+ version: 8.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Azuma
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2021-01-05 00:00:00.000000000 Z
12
+ date: 2022-01-03 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activerecord
@@ -17,14 +17,14 @@ dependencies:
17
17
  requirements:
18
18
  - - "~>"
19
19
  - !ruby/object:Gem::Version
20
- version: '6.1'
20
+ version: 7.0.0
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
25
  - - "~>"
26
26
  - !ruby/object:Gem::Version
27
- version: '6.1'
27
+ version: 7.0.0
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: rgeo-activerecord
30
30
  requirement: !ruby/object:Gem::Requirement
@@ -45,14 +45,14 @@ dependencies:
45
45
  requirements:
46
46
  - - "~>"
47
47
  - !ruby/object:Gem::Version
48
- version: '12.0'
48
+ version: '13.0'
49
49
  type: :development
50
50
  prerelease: false
51
51
  version_requirements: !ruby/object:Gem::Requirement
52
52
  requirements:
53
53
  - - "~>"
54
54
  - !ruby/object:Gem::Version
55
- version: '12.0'
55
+ version: '13.0'
56
56
  - !ruby/object:Gem::Dependency
57
57
  name: minitest
58
58
  requirement: !ruby/object:Gem::Requirement
@@ -81,20 +81,6 @@ dependencies:
81
81
  - - "~>"
82
82
  - !ruby/object:Gem::Version
83
83
  version: '1.1'
84
- - !ruby/object:Gem::Dependency
85
- name: appraisal
86
- requirement: !ruby/object:Gem::Requirement
87
- requirements:
88
- - - "~>"
89
- - !ruby/object:Gem::Version
90
- version: '2.0'
91
- type: :development
92
- prerelease: false
93
- version_requirements: !ruby/object:Gem::Requirement
94
- requirements:
95
- - - "~>"
96
- - !ruby/object:Gem::Version
97
- version: '2.0'
98
84
  description: ActiveRecord connection adapter for PostGIS. It is based on the stock
99
85
  PostgreSQL adapter, and adds built-in support for the spatial extensions provided
100
86
  by PostGIS. It uses the RGeo library to represent spatial data in Ruby.
@@ -110,22 +96,21 @@ files:
110
96
  - lib/active_record/connection_adapters/postgis/arel_tosql.rb
111
97
  - lib/active_record/connection_adapters/postgis/column_methods.rb
112
98
  - lib/active_record/connection_adapters/postgis/create_connection.rb
113
- - lib/active_record/connection_adapters/postgis/databases.rake
99
+ - lib/active_record/connection_adapters/postgis/database_statements.rb
114
100
  - lib/active_record/connection_adapters/postgis/oid/spatial.rb
115
- - lib/active_record/connection_adapters/postgis/postgis_database_tasks.rb
116
- - lib/active_record/connection_adapters/postgis/railtie.rb
117
101
  - lib/active_record/connection_adapters/postgis/schema_statements.rb
118
- - lib/active_record/connection_adapters/postgis/setup.rb
119
102
  - lib/active_record/connection_adapters/postgis/spatial_column.rb
120
103
  - lib/active_record/connection_adapters/postgis/spatial_column_info.rb
121
104
  - lib/active_record/connection_adapters/postgis/spatial_table_definition.rb
105
+ - lib/active_record/connection_adapters/postgis/type.rb
122
106
  - lib/active_record/connection_adapters/postgis/version.rb
123
107
  - lib/active_record/connection_adapters/postgis_adapter.rb
124
108
  - lib/activerecord-postgis-adapter.rb
125
109
  homepage: http://github.com/rgeo/activerecord-postgis-adapter
126
110
  licenses:
127
111
  - BSD-3-Clause
128
- metadata: {}
112
+ metadata:
113
+ rubygems_mfa_required: 'true'
129
114
  post_install_message:
130
115
  rdoc_options: []
131
116
  require_paths:
@@ -134,14 +119,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
134
119
  requirements:
135
120
  - - ">="
136
121
  - !ruby/object:Gem::Version
137
- version: 2.5.0
122
+ version: 2.7.0
138
123
  required_rubygems_version: !ruby/object:Gem::Requirement
139
124
  requirements:
140
125
  - - ">="
141
126
  - !ruby/object:Gem::Version
142
127
  version: '0'
143
128
  requirements: []
144
- rubygems_version: 3.0.8
129
+ rubygems_version: 3.1.4
145
130
  signing_key:
146
131
  specification_version: 4
147
132
  summary: ActiveRecord adapter for PostGIS, based on RGeo.
@@ -1,19 +0,0 @@
1
- # frozen_string_literal: true
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
- environments.each do |environment|
10
- ActiveRecord::Base.configurations
11
- .configs_for(env_name: environment)
12
- .reject { |env| env.config["database"].blank? }
13
- .each do |env|
14
- ActiveRecord::ConnectionAdapters::PostGIS::PostGISDatabaseTasks.new(env.config).setup_gis
15
- end
16
- end
17
- end
18
- end
19
- end
@@ -1,142 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module ActiveRecord # :nodoc:
4
- module ConnectionAdapters # :nodoc:
5
- module PostGIS # :nodoc:
6
- class PostGISDatabaseTasks < ::ActiveRecord::Tasks::PostgreSQLDatabaseTasks # :nodoc:
7
- def initialize(db_config)
8
- super
9
- ensure_installation_configs
10
- end
11
-
12
- def setup_gis
13
- establish_su_connection
14
- if extension_names
15
- setup_gis_from_extension
16
- end
17
- establish_connection(db_config)
18
- end
19
-
20
- # Override to set the database owner and call setup_gis
21
- def create(master_established = false)
22
- establish_master_connection unless master_established
23
- extra_configs = { encoding: encoding }
24
- extra_configs[:owner] = username if has_su?
25
- connection.create_database(db_config.database, configuration_hash.merge(extra_configs))
26
- setup_gis
27
- rescue ::ActiveRecord::StatementInvalid => error
28
- if /database .* already exists/ === error.message
29
- raise ::ActiveRecord::DatabaseAlreadyExists
30
- else
31
- raise
32
- end
33
- end
34
-
35
- private
36
-
37
- # Override to use su_username and su_password
38
- def establish_master_connection
39
- establish_connection(configuration_hash.merge(
40
- database: "postgres",
41
- password: su_password,
42
- schema_search_path: "public",
43
- username: su_username
44
- ))
45
- end
46
-
47
- def establish_su_connection
48
- establish_connection(configuration_hash.merge(
49
- password: su_password,
50
- schema_search_path: "public",
51
- username: su_username
52
- ))
53
- end
54
-
55
- def username
56
- @username ||= configuration_hash[:username]
57
- end
58
-
59
- def quoted_username
60
- @quoted_username ||= ::ActiveRecord::Base.connection.quote_column_name(username)
61
- end
62
-
63
- def password
64
- @password ||= configuration_hash[:password]
65
- end
66
-
67
- def su_username
68
- @su_username ||= configuration_hash.fetch(:su_username, username)
69
- end
70
-
71
- def su_password
72
- @su_password ||= configuration_hash.fetch(:su_password, password)
73
- end
74
-
75
- def has_su?
76
- return @has_su if defined?(@has_su)
77
-
78
- @has_su = configuration_hash.include?(:su_username)
79
- end
80
-
81
- def search_path
82
- @search_path ||= configuration_hash[:schema_search_path].to_s.strip.split(",").map(&:strip)
83
- end
84
-
85
- def extension_names
86
- @extension_names ||= begin
87
- extensions = configuration_hash[:postgis_extension]
88
- case extensions
89
- when ::String
90
- extensions.split(",")
91
- when ::Array
92
- extensions
93
- else
94
- ["postgis"]
95
- end
96
- end
97
- end
98
-
99
- def ensure_installation_configs
100
- if configuration_hash[:setup] == "default" && !configuration_hash[:postgis_extension]
101
- share_dir = `pg_config --sharedir`.strip rescue "/usr/share"
102
- control_file = ::File.expand_path("extension/postgis.control", share_dir)
103
- if ::File.readable?(control_file)
104
- @configuration_hash = configuration_hash.merge(postgis_extension: "postgis").freeze
105
- end
106
- end
107
- end
108
-
109
- def setup_gis_from_extension
110
- extension_names.each do |extname|
111
- if extname == "postgis_topology"
112
- unless search_path.include?("topology")
113
- raise ArgumentError, "'topology' must be in schema_search_path for postgis_topology"
114
- end
115
- connection.execute("CREATE EXTENSION IF NOT EXISTS #{extname} SCHEMA topology")
116
- else
117
- if (postgis_schema = configuration_hash[:postgis_schema])
118
- schema_clause = "WITH SCHEMA #{postgis_schema}"
119
- unless schema_exists?(postgis_schema)
120
- connection.execute("CREATE SCHEMA #{postgis_schema}")
121
- connection.execute("GRANT ALL ON SCHEMA #{postgis_schema} TO PUBLIC")
122
- end
123
- else
124
- schema_clause = ""
125
- end
126
-
127
- connection.execute("CREATE EXTENSION IF NOT EXISTS #{extname} #{schema_clause}")
128
- end
129
- end
130
- end
131
-
132
- def schema_exists?(schema_name)
133
- connection.execute(
134
- "SELECT schema_name FROM information_schema.schemata WHERE schema_name = '#{schema_name}'"
135
- ).any?
136
- end
137
- end
138
-
139
- ::ActiveRecord::Tasks::DatabaseTasks.register_task(/postgis/, PostGISDatabaseTasks)
140
- end
141
- end
142
- end
@@ -1,13 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module ActiveRecord # :nodoc:
4
- module ConnectionAdapters # :nodoc:
5
- module PostGIS # :nodoc:
6
- class Railtie < ::Rails::Railtie # :nodoc:
7
- rake_tasks do
8
- load "active_record/connection_adapters/postgis/databases.rake"
9
- end
10
- end
11
- end
12
- end
13
- end
@@ -1,19 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module ActiveRecord # :nodoc:
4
- module ConnectionAdapters # :nodoc:
5
- module PostGIS # :nodoc:
6
- def self.initial_setup
7
- ::ActiveRecord::SchemaDumper.ignore_tables |= %w(
8
- geography_columns
9
- geometry_columns
10
- layer
11
- raster_columns
12
- raster_overviews
13
- spatial_ref_sys
14
- topology
15
- )
16
- end
17
- end
18
- end
19
- end