activerecord-postgis-adapter 2.1.1 → 2.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 530465c0f3d1c6114a70cc680aeac76cfc92b4fa
4
- data.tar.gz: a38593f010a53528501f14ea121698925a72f4b8
3
+ metadata.gz: cfce80e5cc8bb5ad34d51937326e5f9a2037e207
4
+ data.tar.gz: d3ce8ba42c544093651afcd799d717aa10f76625
5
5
  SHA512:
6
- metadata.gz: d94f15877a0a8bb54c37be063812c9af9d50bc43b2fb8ff2e822a6cb6811a1371d77b83be476a66d41276b37d60535f5c1bc6b20f7c43aea8ee8fc66d1141992
7
- data.tar.gz: 5b095db94a92fd53bdd7775875c45b447c6e609b0b5f7970a365c059687bd4e97f3a80dedcadc9aa492a5747227c56925b95bc521b50bcf78e8c61f63eb9d081
6
+ metadata.gz: 7b79c9d7807b857a6f408495a34714106e3bcbd0b9d4578655abd51abbb53463af920971a7e4f712632df82521708467d8e5b28023e3cd4a8e90ac3fb0caf18a
7
+ data.tar.gz: 3c5f7672e35341ac23bf39c57fa031e9d0f335b93bb954fe593d5595bff3cd19971811d562ae6ff3b2534823da026b2a55b1fd7cfef95413671ea70ce4b20a95
@@ -1,7 +1,13 @@
1
1
  module Arel # :nodoc:
2
2
  module Visitors # :nodoc:
3
+ # Different super-class under JRuby JDBC adapter.
4
+ PostGISSuperclass = if defined?(::ArJdbc::PostgreSQL::BindSubstitution)
5
+ ::ArJdbc::PostgreSQL::BindSubstitution
6
+ else
7
+ ::Arel::Visitors::PostgreSQL
8
+ end
3
9
 
4
- class PostGIS < PostgreSQL # :nodoc:
10
+ class PostGIS < PostGISSuperclass # :nodoc:
5
11
 
6
12
  FUNC_MAP = {
7
13
  'st_wkttosql' => 'ST_GeomFromEWKT',
@@ -1,26 +1,37 @@
1
- require 'pg'
1
+ if(defined?(::RUBY_ENGINE) && ::RUBY_ENGINE == 'jruby')
2
+ require 'active_record/connection_adapters/jdbcpostgresql_adapter'
3
+ else
4
+ require 'pg'
5
+ end
2
6
 
3
7
  module ActiveRecord # :nodoc:
4
8
  module ConnectionHandling # :nodoc:
9
+ if(defined?(::RUBY_ENGINE) && ::RUBY_ENGINE == 'jruby')
10
+ def postgis_connection(config)
11
+ config[:adapter_class] = ::ActiveRecord::ConnectionAdapters::PostGISAdapter::MainAdapter
12
+ postgresql_connection(config)
13
+ end
14
+ alias_method :jdbcpostgis_connection, :postgis_connection
15
+ else
16
+ # Based on the default <tt>postgresql_connection</tt> definition from ActiveRecord.
17
+ # https://github.com/rails/rails/blob/master/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb
18
+ def postgis_connection(config)
19
+ # FULL REPLACEMENT because we need to create a different class.
20
+ conn_params = config.symbolize_keys
5
21
 
6
- # Based on the default <tt>postgresql_connection</tt> definition from ActiveRecord.
7
- # https://github.com/rails/rails/blob/master/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb
8
- def postgis_connection(config)
9
- # FULL REPLACEMENT because we need to create a different class.
10
- conn_params = config.symbolize_keys
11
-
12
- conn_params.delete_if { |_, v| v.nil? }
22
+ conn_params.delete_if { |_, v| v.nil? }
13
23
 
14
- # Map ActiveRecords param names to PGs.
15
- conn_params[:user] = conn_params.delete(:username) if conn_params[:username]
16
- conn_params[:dbname] = conn_params.delete(:database) if conn_params[:database]
24
+ # Map ActiveRecords param names to PGs.
25
+ conn_params[:user] = conn_params.delete(:username) if conn_params[:username]
26
+ conn_params[:dbname] = conn_params.delete(:database) if conn_params[:database]
17
27
 
18
- # Forward only valid config params to PGconn.connect.
19
- conn_params.keep_if { |k, _| VALID_CONN_PARAMS.include?(k) }
28
+ # Forward only valid config params to PGconn.connect.
29
+ conn_params.keep_if { |k, _| VALID_CONN_PARAMS.include?(k) }
20
30
 
21
- # The postgres drivers don't allow the creation of an unconnected PGconn object,
22
- # so just pass a nil connection object for the time being.
23
- ::ActiveRecord::ConnectionAdapters::PostGISAdapter::MainAdapter.new(nil, logger, conn_params, config)
31
+ # The postgres drivers don't allow the creation of an unconnected PGconn object,
32
+ # so just pass a nil connection object for the time being.
33
+ ::ActiveRecord::ConnectionAdapters::PostGISAdapter::MainAdapter.new(nil, logger, conn_params, config)
34
+ end
24
35
  end
25
36
 
26
37
  end
@@ -34,6 +34,12 @@ module ActiveRecord # :nodoc:
34
34
  column_info = SpatialColumnInfo.new(self, quote_string(table_name.to_s))
35
35
  # Limit, precision, and scale are all handled by the superclass.
36
36
  column_definitions(table_name).map do |column_name, type, default, notnull, oid, fmod|
37
+ # JDBC gets true/false in Rails 4, where other platforms get
38
+ # 't'/'f' strings.
39
+ if(notnull.is_a?(String))
40
+ notnull = (notnull == 't')
41
+ end
42
+
37
43
  oid = column_type_map.fetch(oid.to_i, fmod.to_i) { OID::Identity.new }
38
44
  SpatialColumn.new(@rgeo_factory_settings,
39
45
  table_name,
@@ -41,7 +47,7 @@ module ActiveRecord # :nodoc:
41
47
  default,
42
48
  oid,
43
49
  type,
44
- notnull == 'f',
50
+ !notnull,
45
51
  column_info.get(column_name, type))
46
52
  end
47
53
  end
@@ -1,7 +1,7 @@
1
1
  module ActiveRecord
2
2
  module ConnectionAdapters
3
3
  module PostGISAdapter
4
- VERSION = '2.1.1'.freeze
4
+ VERSION = '2.2.0'.freeze
5
5
  end
6
6
  end
7
7
  end
data/test/ddl_test.rb CHANGED
@@ -247,6 +247,52 @@ class DDLTest < ActiveSupport::TestCase # :nodoc:
247
247
  assert_nil klass.columns[1].has_z
248
248
  end
249
249
 
250
+ # Ensure that null contraints info is getting captured like the
251
+ # normal adapter.
252
+ def test_null_constraints
253
+ klass_ = create_ar_class
254
+ klass_.connection.create_table(:spatial_test) do |t_|
255
+ t_.column 'nulls_allowed', :string, :null => true
256
+ t_.column 'nulls_disallowed', :string, :null => false
257
+ end
258
+ assert_equal(true, klass_.columns[-2].null)
259
+ assert_equal(false, klass_.columns[-1].null)
260
+ end
261
+
262
+ # Ensure that default value info is getting captured like the
263
+ # normal adapter.
264
+ def test_column_defaults
265
+ klass_ = create_ar_class
266
+ klass_.connection.create_table(:spatial_test) do |t_|
267
+ t_.column 'sample_integer_neg_default', :integer, :default => -1
268
+ end
269
+ assert_equal(-1, klass_.columns.last.default)
270
+ end
271
+
272
+ # Ensure that column type info is getting captured like the
273
+ # normal adapter.
274
+ def test_column_types
275
+ klass_ = create_ar_class
276
+ klass_.connection.create_table(:spatial_test) do |t_|
277
+ t_.column 'sample_integer', :integer
278
+ t_.column 'sample_string', :string
279
+ t_.column 'latlon', :point
280
+ end
281
+ assert_equal(:integer, klass_.columns[-3].type)
282
+ assert_equal(:string, klass_.columns[-2].type)
283
+ assert_equal(:spatial, klass_.columns[-1].type)
284
+ end
285
+
286
+ def test_array_columns
287
+ klass_ = create_ar_class
288
+ klass_.connection.create_table(:spatial_test) do |t_|
289
+ t_.column 'sample_array', :string, :array => true
290
+ t_.column 'sample_non_array', :string
291
+ end
292
+ assert_equal(true, klass_.columns[-2].array)
293
+ assert_equal(false, klass_.columns[-1].array)
294
+ end
295
+
250
296
  private
251
297
 
252
298
  def geometry_column_count_query
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: 2.1.1
4
+ version: 2.2.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: 2014-06-17 00:00:00.000000000 Z
11
+ date: 2014-08-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -66,6 +66,20 @@ dependencies:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: '1.0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: appraisal
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '1.0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '1.0'
69
83
  description: ActiveRecord connection adapter for PostGIS. It is based on the stock
70
84
  PostgreSQL adapter, but provides built-in support for the spatial extensions provided
71
85
  by PostGIS. It uses the RGeo library to represent spatial data in Ruby.
@@ -118,7 +132,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
118
132
  version: '0'
119
133
  requirements: []
120
134
  rubyforge_project:
121
- rubygems_version: 2.3.0
135
+ rubygems_version: 2.4.1
122
136
  signing_key:
123
137
  specification_version: 4
124
138
  summary: ActiveRecord adapter for PostGIS, based on RGeo.