ar-postgis 0.7.0 → 0.7.1

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: 66f98e01b84021d93b38379d634fe8cd1487f1aa
4
- data.tar.gz: 4481b6e93272c9c9a94040b520de1c401bc98f5a
3
+ metadata.gz: bc965a00fa849a283ba134658b89e27b0f2ad410
4
+ data.tar.gz: 0944b98aab579e3c0daa8e30f58e87019191a666
5
5
  SHA512:
6
- metadata.gz: e83a78c8ef67b34f642b4a18bd7afd5b77a5e1729e429334e2d1e5b3ce4d77ad83920239b786f94877d6486ba1c077d4980c2742b2330e60a56295c3a12c0942
7
- data.tar.gz: 862aab26d4f807aa77e72f157f2a94c18659dbd047b72253149369ef2178ae892fdf4964ca397360fe90bebef517ab15a7177b12cb3dcbf83d57adea2b3b553b
6
+ metadata.gz: 4bd693e58711cadc4758efb4f003d72897904a38ca1a649303b5f7b7717ebe08cf9168dd994ec44b7d217165320df0b2ccea1b873a0e5cbea45f76e70538152a
7
+ data.tar.gz: 8ce9ffee24d1eca217f7a350d329915aac797627faf54ae1cc4edf45042c18171610b6b71243ec4a332c373adaabc8e5d405e7a26c8d66c651092c818232a607
@@ -6,7 +6,7 @@ This document provides basic how-to information that should help get you started
6
6
  * How to set up and configure spatial columns and tables.
7
7
  * How to read, write, and query spatial data.
8
8
 
9
- This document is part of the distribution for the activerecord-postgis-adapter gem. For more information, please visit http://dazuma.github.com/activerecord-postgis-adapter.
9
+ This document is part of the distribution for the ar-postgis gem. For more information, please visit http://dazuma.github.com/activerecord-postgis-adapter.
10
10
 
11
11
  == Installation and Configuration
12
12
 
@@ -25,13 +25,13 @@ However, older software versions can make for a more involved setup process, so
25
25
 
26
26
  This section covers starting a new Rails application from scratch. If you need to add geospatial capabilities to an existing Rails application (i.e. you need to convert a non-spatial database to a spatial database), see the section on "Upgrading a Database With Spatial Features" below.
27
27
 
28
- To create a new Rails application using activerecord-postgis-adapter, start by using the postgresql adapter.
28
+ To create a new Rails application using ar-postgis, start by using the postgresql adapter.
29
29
 
30
30
  rails new my_app --database=postgresql
31
31
 
32
- Next, add the activerecord-postgis-adapter gem to the Gemfile as follows:
32
+ Next, add the ar-postgis gem to the Gemfile as follows:
33
33
 
34
- gem 'activerecord-postgis-adapter'
34
+ gem 'ar-postgis'
35
35
 
36
36
  We also recommend including the "squeel" gem, which comes in very useful for writing spatial queries. Then run <code>bundle install</code> to complete your bundle.
37
37
 
@@ -55,7 +55,7 @@ For more information, see the PostGIS documentation, or any relevant documentati
55
55
 
56
56
  If you have an existing Rails app and an existing database that uses Postgres, and you want to add geospatial features, you should follow these steps.
57
57
 
58
- First, add the activerecord-postgis-adapter gem to the Gemfile, and update your bundle by running <code>bundle install</code>.
58
+ First, add the ar-postgis gem to the Gemfile, and update your bundle by running <code>bundle install</code>.
59
59
 
60
60
  Next, modify your <code>config/database.yml</code> file to invoke the postgis adapter, as described above. At minimum, you will need to change the <code>adapter</code> field from "postgresql" to "postgis".
61
61
 
@@ -119,7 +119,7 @@ A spatial database is one that includes a set of data types, functions, tables,
119
119
 
120
120
  PostGIS is a plugin for PostgreSQL that provides definitions for the objects you need to add to a database to enable geospatial capabilities.
121
121
 
122
- When you create your Rails database as described above in the section on installation and configuration, activerecord-postgis-adapter automatically invokes PostGIS to add the appropriate definitions to your database. You can determine whether your database includes the correct definitions by attempting to invoke the POSTGIS_VERSION function:
122
+ When you create your Rails database as described above in the section on installation and configuration, ar-postgis automatically invokes PostGIS to add the appropriate definitions to your database. You can determine whether your database includes the correct definitions by attempting to invoke the POSTGIS_VERSION function:
123
123
 
124
124
  SELECT POSTGIS_VERSION(); # succeeds if PostGIS objects are present.
125
125
 
@@ -129,7 +129,7 @@ Standard spatial databases also include a table called <code>spatial_ref_sys</co
129
129
 
130
130
  To store spatial data, you must create a column with a spatial type. PostGIS provides a variety of spatial types, including point, linestring, polygon, and different kinds of collections. These types are defined in a standard produced by the Open Geospatial Consortium. Furthermore, you can specify options indicating the coordinate system and number of coordinates for the values you are storing.
131
131
 
132
- The activerecord-postgis-adapter extends \ActiveRecord's migration syntax to support these spatial types. The following example creates four spatial columns in a table:
132
+ The ar-postgis extends \ActiveRecord's migration syntax to support these spatial types. The following example creates four spatial columns in a table:
133
133
 
134
134
  create_table :my_spatial_table do |t|
135
135
  t.column :shape1, :geometry
@@ -147,7 +147,7 @@ The fourth column, "lonlat", has the <code>point</code> type, and accepts only P
147
147
 
148
148
  The fifth column, "lonlatheight", is a geographic (longitude/latitude) point that also includes a third "z" coordinate that can be used to store height information.
149
149
 
150
- The following are the data types understood by PostGIS and exposed by activerecord-postgis-adapter:
150
+ The following are the data types understood by PostGIS and exposed by ar-postgis:
151
151
 
152
152
  * <tt>:geometry</tt> -- Any geometric type
153
153
  * <tt>:point</tt> -- Point data
@@ -173,7 +173,7 @@ The adapter also extends the \ActiveRecord migration syntax for creating spatial
173
173
 
174
174
  === Configuring the \ActiveRecord class
175
175
 
176
- \ActiveRecord's usefulness stems from the way it automatically configures classes based on the database structure and schema. If a column in the database has an integer type, \ActiveRecord automatically casts the data to a Ruby Integer. In the same way, the activerecord-postgis-adapter automatically casts spatial data to a corresponding RGeo data type.
176
+ \ActiveRecord's usefulness stems from the way it automatically configures classes based on the database structure and schema. If a column in the database has an integer type, \ActiveRecord automatically casts the data to a Ruby Integer. In the same way, the ar-postgis automatically casts spatial data to a corresponding RGeo data type.
177
177
 
178
178
  However, RGeo offers more "flexibility" in its type system than can be interpreted solely from analyzing the database column. For example, you can configure RGeo objects to exhibit certain behaviors related to their serialization, validation, coordinate system, or computation. These settings are embodied in the RGeo "factory" associated with the object.
179
179
 
@@ -198,7 +198,7 @@ Here are some examples, given the spatial table defined above:
198
198
 
199
199
  end
200
200
 
201
- The <code>rgeo_factory_generator</code> attribute and <code>set_rgeo_factory_for_column</code> method are actually implemented (and documented) in the "rgeo-activerecord" gem, which is a dependency of the activerecord-postgis-adapter.
201
+ The <code>rgeo_factory_generator</code> attribute and <code>set_rgeo_factory_for_column</code> method are actually implemented (and documented) in the "rgeo-activerecord" gem, which is a dependency of the ar-postgis.
202
202
 
203
203
  === Schema Dump and Reload
204
204
 
@@ -206,7 +206,7 @@ The presence of geospatial data in a database causes some issues with \ActiveRec
206
206
 
207
207
  Because of this, we recommend the following.
208
208
 
209
- * Install the PostGIS definitions in a separate schema called "postgis" (as described in the recommended installation procedure above). The activerecord-postgis-adapter will ignore a schema called "postgis" when dumping the schema, thus omitting the clutter.
209
+ * Install the PostGIS definitions in a separate schema called "postgis" (as described in the recommended installation procedure above). The ar-postgis will ignore a schema called "postgis" when dumping the schema, thus omitting the clutter.
210
210
 
211
211
  * Set the \ActiveRecord schema format to <code>:ruby</code>, _not_ <code>:sql</code>. The former emits higher level commands that can be interpreted correctly to reproduce the schema. The latter, however, emits low level SQL, which loses information such as the fact that AddGeometryColumn() was originally used to generate a column. Executing a <code>:sql</code> format schema dump will _not_ correctly reproduce the schema.
212
212
 
@@ -231,7 +231,7 @@ The RGeo factory for the value is determined by how you configured the \ActiveRe
231
231
 
232
232
  factory = p.factory # returns a spherical factory
233
233
 
234
- You can set a spatial attribute by providing an RGeo geometry object, or by providing the WKT string representation of the geometry. If a string is provided, the activerecord-postgis-adapter will attempt to parse it as WKT and set the value accordingly.
234
+ You can set a spatial attribute by providing an RGeo geometry object, or by providing the WKT string representation of the geometry. If a string is provided, the ar-postgis will attempt to parse it as WKT and set the value accordingly.
235
235
 
236
236
  record.lonlat = 'POINT(-122, 47)' # sets the value to the given point
237
237
 
@@ -239,7 +239,7 @@ If the WKT parsing fails, the value currently will be silently set to nil. In th
239
239
 
240
240
  record.lonlat = 'POINT(x)' # sets the value to nil
241
241
 
242
- If you set the value to an RGeo object, the factory needs to match the factory for the attribute. If the factories do not match, activerecord-postgis-adapter will attempt to cast the value to the correct factory.
242
+ If you set the value to an RGeo object, the factory needs to match the factory for the attribute. If the factories do not match, ar-postgis will attempt to cast the value to the correct factory.
243
243
 
244
244
  p2 = factory.point(-122, 47) # p2 is a point in a spherical factory
245
245
  record.lonlat = p2 # sets the value to the given point
@@ -289,4 +289,4 @@ Note that bounding box queries make sense only in a projected coordinate system;
289
289
 
290
290
  == License
291
291
 
292
- https://github.com/neighborland/activerecord-postgis-adapter/LICENSE.txt
292
+ https://github.com/ar-postgis/ar-postgis/LICENSE.txt
@@ -1,147 +1,10 @@
1
1
  === 0.7.0
2
2
 
3
+ * Rename gem to ar-postgis
3
4
  * Require ruby 2.0
4
- * Require ActiveRecord 4.0
5
+ * Require ActiveRecord 4.1
5
6
  * Drop JRuby support
6
7
 
7
- === 0.6.5 / 2013-06-24
8
+ === activerecord-postgis-adapter
8
9
 
9
- * Fixed stoopid syntax errors in rake db:gis:setup tass. (Pull requests by rhodrid and jdurand)
10
-
11
- === 0.6.4 / 2013-05-28
12
-
13
- * Fixed a crash with array conversions in Rails 4. (Contributed by Christopher Bull)
14
- * The gis setup task was broken in any Rails other than 3.2.x. Fixed (I think). (Reports by Rupert de Guzman and slbug)
15
- * Raise a more useful exception for the (as yet) unsupported combination of Rails 4 and JRuby.
16
-
17
- === 0.6.3 / 2013-05-04
18
-
19
- * Several fixes for compatibility with changes to Rails 4.0.0 rc1. (Reports by slbug and Victor Costan)
20
- * Rails 3 rake tasks properly set PGUSER when appropriate. (Pull request by Mitin Pavel)
21
- * Fixed a nil exception on some Rails 4 migrations. (Pull request by ivanfoong and Victor Costan)
22
-
23
- === 0.6.2 / 2013-03-08
24
-
25
- * The PostGIS setup now properly connects as the superuser. (Reported by Adam Trilling)
26
- * Fix database setup rake tasks under jruby/jdbc adapter. (Pull request by Nick Muerdter)
27
- * Drop table no longer tries to modify the geometry_columns view under PostGIS 2.0.
28
- * The Rakefile is now compatible with RubyGems 2.0.
29
-
30
- === 0.6.1 / 2013-02-28
31
-
32
- * Fixed some gem loading issues.
33
-
34
- === 0.6.0 / 2013-02-28
35
-
36
- * Experimental support for the recently released Rails 4.0 beta.
37
- * Documentation improvements.
38
-
39
- === 0.5.1 / 2013-02-04
40
-
41
- * Database creation properly treats geometry_columns as a view when setting owner. (Pull request by hendrikstier)
42
- * Provide rake db:gis:setup task. (Pull request by Cody Russell)
43
- * Modifications for compatibility with postgres_ext. (Pull request by legendetm)
44
- * SpatialTableDefinition properly subclasses the Postgres-specific table definition class, if available. (Pull request by Joe Noon)
45
- * Database creation script no longer fails if the username includes weird characters. (Contributed by Toms Mikoss)
46
- * Updates for compatibility with jdbc-postgres 9.2.1002.1
47
-
48
- === 0.5.0 / 2012-12-12
49
-
50
- Thanks to the many who have submitted pull requests. A bunch of them are in this release. Special thanks to Nick Muerdter, who succeeded in porting the adapter to work with the JDBC Postgres adapter in JRuby, and also got Travis up and running for the project.
51
-
52
- * Add JRuby compatibility with the activerecord-jdbcpostgresql-adapter gem. (Pull request by Nick Muerdter)
53
- * Allow WKT to be to be specified as a string-like object rather than having to be a String. (Pull request by Bryan Larsen)
54
- * Ignore postgis_topology tables 'layer' and 'topology' in rake db:schema:dump. (Pull request by Greg Phillips)
55
- * Create schemas specified in schema_search_path only if they don't exist. (Pull request by legendetm)
56
- * Force the postgis_topology extension be created in the topology schema. (Pull request by Dimitri Roche)
57
- * Specifically set the ownership of the postgis related tables to the regular user. (Pull request by corneverbruggen)
58
- * The gemspec no longer includes the timestamp in the version, so that bundler can pull from github. (Reported by corneverbruggen)
59
- * Update tests for PostGIS 2.0 compatibility.
60
- * Travis-CI integration. (Pull request by Nick Muerdter)
61
- * Add a missing srid in the Readme. (Pull request by gouthamvel)
62
- * Readme clarifies that BoundingBox objects can be used in a query only for projected coordinate systems. (Reported by Tee Parham)
63
- * Update URLs to point to new website.
64
-
65
- === 0.4.3 / 2012-04-13
66
-
67
- * Rake tasks failed on Rails 3.0.x because of an issue with rgeo-activerecord pre-0.4.5. Now we require the fixed version.
68
-
69
- === 0.4.2 / 2012-04-12
70
-
71
- * Support the db:structure:load rake task in recent versions of Rails.
72
- * Support installing PostGIS via the PostgreSQL extension mechanism (requires at least PostGIS 2.0 and PostgreSQL 9.1).
73
- * Support bounding boxes in queries (useful for "window" queries such as finding objects to display in a map region).
74
- * Fix some issues determine the correct default value for spatial columns.
75
-
76
- === 0.4.1 / 2012-02-22
77
-
78
- * Some compatibility fixes for Rails 3.2. (Reported by Ryan Williams with implementation help from Radek Paviensky.)
79
- * Now requires rgeo-activerecord 0.4.3.
80
-
81
- === 0.4.0 / 2011-08-15
82
-
83
- * Various fixes for Rails 3.1 compatibility.
84
- * Now requires rgeo-activerecord 0.4.0.
85
- * INCOMPATIBLE CHANGE: simple queries (e.g. MyClass.where(:latlon => my_point)) use an objective rather than spatial equality test. Earlier versions transformed this form to use st_equals, but now if you need to test for spatial equality, you'll need to call st_equals explicitly. I'm still evaluating which direction we want to go with this in the future, but we may be stuck with the current behavior because the hack required to transform these queries to use spatial equality was egregious and broke in Rails 3.1 with no clear workaround.
86
-
87
- === 0.3.6 / 2011-06-21
88
-
89
- * Require latest rgeo-activerecord to get some fixes.
90
- * Note PostgreSQL 9 requirement in the README. (Reported by Samuel Cochran)
91
- * Now doesn't throw exceptions if an RGeo cast fails when setting an attribute.
92
-
93
- === 0.3.5 / 2011-04-12
94
-
95
- * The .gemspec was missing the databases.rake file. Fixed.
96
-
97
- === 0.3.4 / 2011-04-11
98
-
99
- * A .gemspec file is now available for gem building and bundler git integration.
100
-
101
- === 0.3.3 / 2011-02-28
102
-
103
- * INCOMPATIBLE CHANGE: the default SRID for non-geography columns is now -1, rather than 4326. (Geography columns still default to 4326.)
104
- * It is now possible to create a spatial column without a corresponding entry in the geometry_columns table, and the adapter now handles this case properly. (Reported by Pirmin Kalberer)
105
- * Now requires rgeo-activerecord 0.3.1 (which brings a critical fix involving declaring multiple spatial columns in a migration).
106
-
107
- === 0.3.2 / 2011-02-11
108
-
109
- * You can now specify a separate "database creation" superuser role so your normal PostgreSQL login role doesn't need superuser privileges when running database creation tasks.
110
- * Database creation tasks automatically create all schemas listed in the schema search path.
111
-
112
- === 0.3.1 / 2011-02-01
113
-
114
- * Fixed a syntax error that prevented the adapter from loading on Ruby 1.8. Whoops. (Reported by miguelperez)
115
-
116
- === 0.3.0 / 2011-01-26
117
-
118
- * Reworked type and constraint handling, which should result in a large number of bug fixes, especially related to schema dumps.
119
- * Experimental support for complex spatial queries. (Requires Arel 2.1, which is expected to be released with Rails 3.1.)
120
- * The path to the Railtie is now different (see the README), though a compatibility wrapper has been left in the old location.
121
- * Getting index information from the ActiveRecord class now properly recognizes spatial-ness.
122
- * Reorganized the code a bit for better clarity.
123
-
124
- === 0.2.3 / 2011-01-06
125
-
126
- * Many of ActiveRecord's rake tasks weren't working because they need to know about every adapter explicitly. I hesitate to call this "fixed" since I see it as a problem in ActiveRecord, but we now at least have a workaround so the rake tasks will run properly. (Reported by Tad Thorley.)
127
- * Dumping schema.rb now omits the PostGIS internal tables.
128
- * Added a new configuration parameter pointing to the script directory, for rake db:create.
129
- * If the "postgis" schema is included in the schema search path, it is used as a container for the PostGIS internal definitions when running rake db:create. Furthermore, that schema is omitted when dumping the structure.sql. This should eliminate all the PostGIS internal cruft from SQL structure dumps, and also eliminate the errors that would appear when rebuilding a test database because the PostGIS internals would get applied twice.
130
-
131
- === 0.2.2 / 2010-12-27
132
-
133
- * Support for basic spatial equality queries. e.g. constructs such as:
134
- MyClass.where(:geom_column => factory.point(1, 2))
135
- MyClass.where(:geom_column => 'POINT(1 2)')
136
- * Fixed an exception when adding spatial columns where the column name is specified as a symbol.
137
-
138
- === 0.2.1 / 2010-12-15
139
-
140
- * Provides meta-information to RGeo 0.2.2 or later to support access to PostGIS's spatial reference system table.
141
-
142
- === 0.2.0 / 2010-12-07
143
-
144
- * Initial public alpha release. Spun activerecord-postgis-adapter off from the core rgeo gem.
145
- * You can now set the factory for a specific column by name.
146
-
147
- For earlier history, see the History file for the rgeo gem.
10
+ see https://github.com/dazuma/activerecord-postgis-adapter for previous history
@@ -1,22 +1,29 @@
1
1
  == PostGIS \ActiveRecord Adapter
2
2
 
3
- The activerecord-postgis-adapter is a plugin that provides access to features of the PostGIS geospatial database from \ActiveRecord. Technically, it extends the standard postgresql adapter to provide support for the spatial data types and features added by the PostGIS extension. It uses the {RGeo}[http://github.com/dazuma/rgeo] library to represent spatial data in Ruby.
3
+ The ar-postgis gem provides access to features of the PostGIS geospatial database from \ActiveRecord.
4
+ Technically, it extends the standard postgresql adapter to provide support for the spatial data types and features
5
+ added by the PostGIS extension. It uses the {RGeo}[http://github.com/dazuma/rgeo] library to represent spatial data
6
+ in Ruby.
4
7
 
5
8
  Original project: https://github.com/dazuma/activerecord-postgis-adapter/
6
9
 
7
- == About the PostGIS Adapter
8
-
9
- This is a brief summary covering how to use activerecord-postgis-adapter. For full documentation, see Documentation.rdoc.
10
+ For full documentation, see Documentation.rdoc.
10
11
 
11
12
  === Features
12
13
 
13
- The adapter provides three basic capabilities.
14
+ The adapter provides three basic capabilities:
14
15
 
15
- First, it provides *spatial migrations*. It extends the \ActiveRecord migration syntax to support creating spatially-typed columns and spatial indexes. You can control the various PostGIS-provided attributes such as srid, dimension, and geographic vs geometric math.
16
+ First, it provides *spatial migrations*. It extends the \ActiveRecord migration syntax to support creating
17
+ spatially-typed columns and spatial indexes. You can control the various PostGIS-provided attributes such as srid,
18
+ dimension, and geographic vs geometric math.
16
19
 
17
- Second, it recognizes spatial types and casts them properly to RGeo geometry objects. The adapter can configure these objects automatically based on the srid and dimension in the database table, or you can tell it to convert the data to a different form. You can also set attribute data using WKT format.
20
+ Second, it recognizes spatial types and casts them properly to RGeo geometry objects. The adapter can configure these
21
+ objects automatically based on the srid and dimension in the database table, or you can tell it to convert the data to
22
+ a different form. You can also set attribute data using WKT format.
18
23
 
19
- Third, it lets you include simple spatial data in queries. WKT format data and RGeo objects can be embedded in where clauses. If you include the Squeel gem, the adapter also supports advanced queries utilizing the standard SQL spatial function set.
24
+ Third, it lets you include simple spatial data in queries. WKT format data and RGeo objects can be embedded in where
25
+ clauses. If you include the Squeel gem, the adapter also supports advanced queries utilizing the standard SQL spatial
26
+ function set.
20
27
 
21
28
  === Requirements
22
29
 
@@ -24,25 +31,27 @@ The adapter has the following requirements.
24
31
 
25
32
  * Ruby 2.0.0 or later.
26
33
  * PostgreSQL 9.0 or later.
27
- * PostGIS 2.0, or later.
34
+ * PostGIS 2.0 or later.
28
35
  * ActiveRecord 4.0.2 or later.
29
- * rgeo and rgeo-activerecord.
30
-
31
- === Installation and Configuration
36
+ * rgeo and rgeo-ar.
32
37
 
33
- To install this adapter in a Rails application, add it to your Gemfile:
38
+ === Install
34
39
 
35
- gem 'activerecord-postgis-adapter'
40
+ Add it to your Gemfile:
36
41
 
37
- and run bundle install to update your bundle.
42
+ gem 'ar-postgis'
38
43
 
39
- Alternately, if you are not using bundler, install it separately as a gem:
44
+ or install it as a gem:
40
45
 
41
- gem install activerecord-postgis-adapter
46
+ gem install ar-postgis
42
47
 
43
- Please note that this adapter uses the rgeo gem, which may have additional dependencies. Please see the \README documentation for rgeo for more information.
48
+ Please note that this adapter uses the rgeo gem, which may have additional dependencies. Please see the \README
49
+ documentation for rgeo for more information.
44
50
 
45
- Once you have installed the adapter, you'll need to edit your config/database.yml to call for it. At minimum, this means changing the adapter name from "postgresql" to "postgis". It may also require other settings to ensure that other functions (such as rake test) continue to work as expected. We recommend reading the Configuration section in the Documentation.rdoc file carefully before starting to use this adapter.
51
+ Once you have installed the adapter, you'll need to edit your config/database.yml to call for it. At minimum, this
52
+ means changing the adapter name from "postgresql" to "postgis". It may also require other settings to ensure that
53
+ other functions (such as rake test) continue to work as expected. We recommend reading the Configuration section
54
+ in the Documentation.rdoc file carefully before starting to use this adapter.
46
55
 
47
56
  == Development and Support
48
57
 
@@ -50,27 +59,17 @@ Original project info:
50
59
 
51
60
  \Documentation is available at http://dazuma.github.com/activerecord-postgis-adapter/rdoc
52
61
 
53
- Source code is hosted on Github at http://github.com/dazuma/activerecord-postgis-adapter
54
-
55
- Contributions are welcome. Fork the project on Github.
56
-
57
- Report bugs on Github issues at http://github.org/dazuma/activerecord-postgis-adapter/issues
58
-
59
62
  Support available on the rgeo-users google group at http://groups.google.com/group/rgeo-users
60
63
 
61
- Contact the author at dazuma at gmail dot com.
62
-
63
64
  == Acknowledgments
64
65
 
65
- The PostGIS Adapter and its supporting libraries (including RGeo) are
66
+ The PostGIS Adapter and its supporting libraries (including RGeo) were originally
66
67
  written by Daniel Azuma (http://www.daniel-azuma.com).
67
68
 
68
- Development is supported by Pirq. (http://pirq.com).
69
+ Development was supported by Pirq. (http://pirq.com).
69
70
 
70
71
  This adapter implementation owes some debt to the spatial_adapter plugin
71
- (http://github.com/fragility/spatial_adapter). Although we made some
72
- different design decisions for this adapter, studying the spatial_adapter
73
- source gave us a head start on the implementation.
72
+ (http://github.com/fragility/spatial_adapter).
74
73
 
75
74
  == License
76
75
 
@@ -1,4 +1,4 @@
1
- # The activerecord-postgis-adapter gem installs the *postgis*
1
+ # The ar-postgis gem installs the *postgis*
2
2
  # connection adapter into ActiveRecord.
3
3
 
4
4
  module ActiveRecord
@@ -112,13 +112,6 @@ module ActiveRecord # :nodoc:
112
112
  end
113
113
  end
114
114
 
115
- def drop_table(table_name_, *options_)
116
- if postgis_lib_version.to_s.split('.').first.to_i == 1
117
- execute("DELETE from geometry_columns where f_table_name='#{quote_string(table_name_.to_s)}'")
118
- end
119
- super
120
- end
121
-
122
115
  def add_column(table_name_, column_name_, type_, options_={})
123
116
  table_name_ = table_name_.to_s
124
117
  column_name_ = column_name_.to_s
@@ -134,7 +127,7 @@ module ActiveRecord # :nodoc:
134
127
  type_ = (options_[:type] || info_[:type] || type_).to_s.gsub('_', '').upcase
135
128
  has_z_ = options_[:has_z]
136
129
  has_m_ = options_[:has_m]
137
- srid_ = (options_[:srid] || -1).to_i
130
+ srid_ = (options_[:srid] || PostGISAdapter::DEFAULT_SRID).to_i
138
131
  if options_[:geographic]
139
132
  type_ << 'Z' if has_z_
140
133
  type_ << 'M' if has_m_
@@ -11,14 +11,13 @@ module ActiveRecord # :nodoc:
11
11
  def initialize(factory_settings_, table_name_, name_, default_, oid_type_, sql_type_=nil, null_=true, opts_=nil)
12
12
  @factory_settings = factory_settings_
13
13
  @table_name = table_name_
14
- @geographic = sql_type_ =~ /geography/i ? true : false
14
+ @geographic = !!(sql_type_ =~ /geography/i)
15
15
  if opts_
16
16
  # This case comes from an entry in the geometry_columns table
17
- @geometric_type = ::RGeo::ActiveRecord.geometric_type_from_name(opts_[:type]) ||
18
- ::RGeo::Feature::Geometry
17
+ @geometric_type = ::RGeo::ActiveRecord.geometric_type_from_name(opts_[:type]) || ::RGeo::Feature::Geometry
19
18
  @srid = opts_[:srid].to_i
20
- @has_z = opts_[:has_z] ? true : false
21
- @has_m = opts_[:has_m] ? true : false
19
+ @has_z = !!opts_[:has_z]
20
+ @has_m = !!opts_[:has_m]
22
21
  elsif @geographic
23
22
  # Geographic type information is embedded in the SQL type
24
23
  @geometric_type = ::RGeo::Feature::Geometry
@@ -80,7 +80,11 @@ module ActiveRecord # :nodoc:
80
80
  end
81
81
 
82
82
  def srid
83
- @srid ? @srid.to_i : (geographic? ? 4326 : -1)
83
+ if @srid
84
+ @srid.to_i
85
+ else
86
+ geographic? ? 4326 : PostGISAdapter::DEFAULT_SRID
87
+ end
84
88
  end
85
89
 
86
90
  def has_z?
@@ -5,6 +5,9 @@ module ActiveRecord # :nodoc:
5
5
  :geography => {:type => 'geometry', :geographic => true}
6
6
  )
7
7
 
8
+ # http://postgis.17.x6.nabble.com/Default-SRID-td5001115.html
9
+ DEFAULT_SRID = 0
10
+
8
11
  module CommonAdapterMethods # :nodoc:
9
12
  def set_rgeo_factory_settings(factory_settings_)
10
13
  @rgeo_factory_settings = factory_settings_
@@ -22,9 +25,8 @@ module ActiveRecord # :nodoc:
22
25
  @postgis_lib_version ||= select_value("SELECT PostGIS_Lib_Version()")
23
26
  end
24
27
 
25
- # http://postgis.17.x6.nabble.com/Default-SRID-td5001115.html
26
28
  def default_srid
27
- 0
29
+ DEFAULT_SRID
28
30
  end
29
31
 
30
32
  def srs_database_columns
@@ -1,7 +1,7 @@
1
1
  module ActiveRecord
2
2
  module ConnectionAdapters
3
3
  module PostGISAdapter
4
- VERSION = "0.7.0".freeze
4
+ VERSION = "0.7.1".freeze
5
5
  end
6
6
  end
7
- end
7
+ end
@@ -1,21 +1,16 @@
1
1
  require 'minitest/autorun'
2
2
  require 'rgeo/active_record/adapter_test_helper'
3
3
 
4
-
5
4
  module RGeo
6
5
  module ActiveRecord # :nodoc:
7
6
  module PostGISAdapter # :nodoc:
8
7
  module Tests # :nodoc:
9
-
10
8
  class TestDDL < ::MiniTest::Test # :nodoc:
11
-
12
9
  DATABASE_CONFIG_PATH = ::File.dirname(__FILE__)+'/database.yml'
13
10
  OVERRIDE_DATABASE_CONFIG_PATH = ::File.dirname(__FILE__)+'/database_local.yml'
14
11
  include AdapterTestHelper
15
12
 
16
13
  define_test_methods do
17
-
18
-
19
14
  def test_create_simple_geometry
20
15
  klass_ = create_ar_class
21
16
  klass_.connection.create_table(:spatial_test) do |t_|
@@ -26,13 +21,12 @@ module RGeo
26
21
  assert_equal(::RGeo::Feature::Geometry, col_.geometric_type)
27
22
  assert_equal(true, col_.has_spatial_constraints?)
28
23
  assert_equal(false, col_.geographic?)
29
- assert_equal(if(klass_.connection.postgis_lib_version >= "2") then 0 else -1 end, col_.srid)
24
+ assert_equal(0, col_.srid)
30
25
  assert(klass_.cached_attributes.include?('latlon'))
31
26
  klass_.connection.drop_table(:spatial_test)
32
27
  assert_equal(0, klass_.connection.select_value("SELECT COUNT(*) FROM geometry_columns WHERE f_table_name='spatial_test'").to_i)
33
28
  end
34
29
 
35
-
36
30
  # no_constraints no longer supported in PostGIS 2.0
37
31
  def _test_create_no_constraints_geometry
38
32
  klass_ = create_ar_class
@@ -50,7 +44,6 @@ module RGeo
50
44
  assert_equal(0, klass_.connection.select_value("SELECT COUNT(*) FROM geometry_columns WHERE f_table_name='spatial_test'").to_i)
51
45
  end
52
46
 
53
-
54
47
  def test_create_simple_geography
55
48
  klass_ = create_ar_class
56
49
  klass_.connection.create_table(:spatial_test) do |t_|
@@ -65,7 +58,6 @@ module RGeo
65
58
  assert_equal(0, klass_.connection.select_value("SELECT COUNT(*) FROM geometry_columns WHERE f_table_name='spatial_test'").to_i)
66
59
  end
67
60
 
68
-
69
61
  def test_create_point_geometry
70
62
  klass_ = create_ar_class
71
63
  klass_.connection.create_table(:spatial_test) do |t_|
@@ -75,7 +67,6 @@ module RGeo
75
67
  assert(klass_.cached_attributes.include?('latlon'))
76
68
  end
77
69
 
78
-
79
70
  def test_create_geometry_with_index
80
71
  klass_ = create_ar_class
81
72
  klass_.connection.create_table(:spatial_test) do |t_|
@@ -87,7 +78,6 @@ module RGeo
87
78
  assert(klass_.connection.indexes(:spatial_test).last.spatial)
88
79
  end
89
80
 
90
-
91
81
  def test_add_geometry_column
92
82
  klass_ = create_ar_class
93
83
  klass_.connection.create_table(:spatial_test) do |t_|
@@ -100,7 +90,7 @@ module RGeo
100
90
  assert_equal(2, klass_.connection.select_value("SELECT COUNT(*) FROM geometry_columns WHERE f_table_name='spatial_test'").to_i)
101
91
  cols_ = klass_.columns
102
92
  assert_equal(::RGeo::Feature::Geometry, cols_[-3].geometric_type)
103
- assert_equal(if(klass_.connection.postgis_lib_version >= "2") then 0 else -1 end, cols_[-3].srid)
93
+ assert_equal(0, cols_[-3].srid)
104
94
  assert_equal(true, cols_[-3].has_spatial_constraints?)
105
95
  assert_equal(::RGeo::Feature::Point, cols_[-2].geometric_type)
106
96
  assert_equal(4326, cols_[-2].srid)
@@ -110,7 +100,6 @@ module RGeo
110
100
  assert_equal(false, cols_[-1].has_spatial_constraints?)
111
101
  end
112
102
 
113
-
114
103
  # no_constraints no longer supported in PostGIS 2.0
115
104
  def _test_add_no_constraints_geometry_column
116
105
  klass_ = create_ar_class
@@ -124,7 +113,7 @@ module RGeo
124
113
  assert_equal(1, klass_.connection.select_value("SELECT COUNT(*) FROM geometry_columns WHERE f_table_name='spatial_test'").to_i)
125
114
  cols_ = klass_.columns
126
115
  assert_equal(::RGeo::Feature::Geometry, cols_[-3].geometric_type)
127
- assert_equal(if(klass_.connection.postgis_lib_version >= "2") then 0 else -1 end, cols_[-3].srid)
116
+ assert_equal(0, cols_[-3].srid)
128
117
  assert_equal(true, cols_[-3].has_spatial_constraints?)
129
118
  assert_equal(::RGeo::Feature::Geometry, cols_[-2].geometric_type)
130
119
  assert_nil(cols_[-2].srid)
@@ -134,7 +123,6 @@ module RGeo
134
123
  assert_equal(false, cols_[-1].has_spatial_constraints?)
135
124
  end
136
125
 
137
-
138
126
  def test_add_geography_column
139
127
  klass_ = create_ar_class
140
128
  klass_.connection.create_table(:spatial_test) do |t_|
@@ -147,7 +135,7 @@ module RGeo
147
135
  assert_equal(1, klass_.connection.select_value("SELECT COUNT(*) FROM geometry_columns WHERE f_table_name='spatial_test'").to_i)
148
136
  cols_ = klass_.columns
149
137
  assert_equal(::RGeo::Feature::Geometry, cols_[-3].geometric_type)
150
- assert_equal(if(klass_.connection.postgis_lib_version >= "2") then 0 else -1 end, cols_[-3].srid)
138
+ assert_equal(0, cols_[-3].srid)
151
139
  assert_equal(true, cols_[-3].has_spatial_constraints?)
152
140
  assert_equal(::RGeo::Feature::Point, cols_[-2].geometric_type)
153
141
  assert_equal(4326, cols_[-2].srid)
@@ -157,7 +145,6 @@ module RGeo
157
145
  assert_equal(false, cols_[-1].has_spatial_constraints?)
158
146
  end
159
147
 
160
-
161
148
  def test_drop_geometry_column
162
149
  klass_ = create_ar_class
163
150
  klass_.connection.create_table(:spatial_test) do |t_|
@@ -171,11 +158,10 @@ module RGeo
171
158
  cols_ = klass_.columns
172
159
  assert_equal(::RGeo::Feature::Geometry, cols_[-1].geometric_type)
173
160
  assert_equal('latlon', cols_[-1].name)
174
- assert_equal(if(klass_.connection.postgis_lib_version >= "2") then 0 else -1 end, cols_[-1].srid)
161
+ assert_equal(0, cols_[-1].srid)
175
162
  assert_equal(false, cols_[-1].geographic?)
176
163
  end
177
164
 
178
-
179
165
  def test_drop_geography_column
180
166
  klass_ = create_ar_class
181
167
  klass_.connection.create_table(:spatial_test) do |t_|
@@ -196,7 +182,6 @@ module RGeo
196
182
  assert_equal(false, cols_[-2].geographic?)
197
183
  end
198
184
 
199
-
200
185
  def test_create_simple_geometry_using_shortcut
201
186
  klass_ = create_ar_class
202
187
  klass_.connection.create_table(:spatial_test) do |t_|
@@ -206,13 +191,12 @@ module RGeo
206
191
  col_ = klass_.columns.last
207
192
  assert_equal(::RGeo::Feature::Geometry, col_.geometric_type)
208
193
  assert_equal(false, col_.geographic?)
209
- assert_equal(if(klass_.connection.postgis_lib_version >= "2") then 0 else -1 end, col_.srid)
194
+ assert_equal(0, col_.srid)
210
195
  assert(klass_.cached_attributes.include?('latlon'))
211
196
  klass_.connection.drop_table(:spatial_test)
212
197
  assert_equal(0, klass_.connection.select_value("SELECT COUNT(*) FROM geometry_columns WHERE f_table_name='spatial_test'").to_i)
213
198
  end
214
199
 
215
-
216
200
  # no_constraints no longer supported in PostGIS 2.0
217
201
  def _test_create_no_constraints_geometry_using_shortcut
218
202
  klass_ = create_ar_class
@@ -229,11 +213,9 @@ module RGeo
229
213
  assert_equal(0, klass_.connection.select_value("SELECT COUNT(*) FROM geometry_columns WHERE f_table_name='spatial_test'").to_i)
230
214
  end
231
215
 
232
-
233
216
  def test_create_simple_geography_using_shortcut
234
217
  klass_ = create_ar_class
235
218
  klass_.connection.create_table(:spatial_test) do |t_|
236
- # t_.method_missing(:geometry, 'latlon', :geographic => true)
237
219
  t_.geometry 'latlon', :geographic => true
238
220
  end
239
221
  col_ = klass_.columns.last
@@ -244,7 +226,6 @@ module RGeo
244
226
  assert_equal(0, klass_.connection.select_value("SELECT COUNT(*) FROM geometry_columns WHERE f_table_name='spatial_test'").to_i)
245
227
  end
246
228
 
247
-
248
229
  def test_create_point_geometry_using_shortcut
249
230
  klass_ = create_ar_class
250
231
  klass_.connection.create_table(:spatial_test) do |t_|
@@ -254,7 +235,6 @@ module RGeo
254
235
  assert(klass_.cached_attributes.include?('latlon'))
255
236
  end
256
237
 
257
-
258
238
  def test_create_geometry_with_options
259
239
  klass_ = create_ar_class
260
240
  klass_.connection.create_table(:spatial_test) do |t_|
@@ -273,7 +253,6 @@ module RGeo
273
253
  assert_equal(0, klass_.connection.select_value("SELECT COUNT(*) FROM geometry_columns WHERE f_table_name='spatial_test'").to_i)
274
254
  end
275
255
 
276
-
277
256
  def test_create_geometry_using_limit
278
257
  klass_ = create_ar_class
279
258
  klass_.connection.create_table(:spatial_test) do |t_|
@@ -292,11 +271,8 @@ module RGeo
292
271
  assert_equal(0, klass_.connection.select_value("SELECT COUNT(*) FROM geometry_columns WHERE f_table_name='spatial_test'").to_i)
293
272
  end
294
273
 
295
-
296
274
  end
297
-
298
275
  end
299
-
300
276
  end
301
277
  end
302
278
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ar-postgis
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.0
4
+ version: 0.7.1
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-04-28 00:00:00.000000000 Z
11
+ date: 2014-05-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord