rgeo-activerecord 4.0.0 → 4.0.1

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
  SHA1:
3
- metadata.gz: 3ce0169c42b01d3301ad100aa05f613c9a5ad36c
4
- data.tar.gz: 03052f644627dde6d874dbc1e91cc4a83bf9dd15
3
+ metadata.gz: 8241a074715943e7dcb035f37f99151a5cf9ec2f
4
+ data.tar.gz: cb3e2543f6514a61440adab0e992e2d0a7bb26db
5
5
  SHA512:
6
- metadata.gz: f806e07dcf6dd5ec1995ce204f108fcc845a40e2afbfd5428c811d0446e6b24b83075b88a6e69f89b73d716eb4b0019d5d1a3601b4a176ef64c4123911c8f5ce
7
- data.tar.gz: 3d4acdf3243380fdf07cf23a5fabc6d6eb1abe4bc6bd71e1637c95f3f52b16ef09143579e38420165108d0b5f1f2dc58e30ecca9882661a7e1a204350b8c42d4
6
+ metadata.gz: 518773c88ab208d156736c320460ab637af0281e46a3c40cc62ec41b28c3ffcdec82d171b8137af2f4c84b3f4eb86e6075fe8d5563b233e1c6fa7f47abf03abb
7
+ data.tar.gz: d19b96993b420ba1d3798bf77e7adcbcb7c0093da81c8c01aa5335ab91ebb57a76df5e3fe0f3f169173dbd005606b5ced4483e09c3655dc376fa8118016d633e
data/History.md CHANGED
@@ -1,3 +1,34 @@
1
+ ### 4.0.1 / 2015-12-25
2
+
3
+ * Rubocop style cleanup #31
4
+ * Do not distribute test files with gem
5
+
6
+ ### 4.0.0 / 2015-05-24
7
+
8
+ * Remove GeoTableDefinitions, GeoConnectionAdapter
9
+
10
+ ### 3.0.0 / 2015-05-09
11
+
12
+ * Remove AdapterTestHelper module
13
+ * Remove RGeoFactorySettings
14
+ * Remove #set_rgeo_factory_for_column, #rgeo_factory_for_column, etc
15
+ * Add SpatialFactoryStore (see https://github.com/rgeo/rgeo-activerecord/commit/b1da5cb222)
16
+
17
+ ### 2.1.1 / 2015-03-18
18
+
19
+ * Fix collector calls for arel 6.0 API
20
+
21
+ ### 2.1.0 / 2015-02-07
22
+
23
+ * Update visit API for arel 6.0
24
+ * Remove attribute caching (removed in AR 4.2)
25
+ * Remove support for `spatial: true` index option (use standard `using: :gist`)
26
+
27
+ ### 2.0.0 / 2014-12-02
28
+
29
+ * Dump schema using new style hash - https://github.com/rgeo/rgeo-activerecord/pull/18
30
+ * Require ActiveRecord 4.2
31
+
1
32
  ### 1.2.0 / 2014-08-21
2
33
 
3
34
  * Support ActiveRecord 4.2
data/README.md CHANGED
@@ -32,17 +32,60 @@ gem 'rgeo-activerecord'
32
32
  `rgeo-activerecord` has the following requirements:
33
33
 
34
34
  * Ruby 1.9.3 or later
35
- * ActiveRecord 4.0.0 or later
36
35
  * rgeo 0.3.20 or later.
37
36
 
38
- Version `0.6.0` supports earlier versions of ruby and activerecord:
37
+ The latest version supports ActiveRecord 4.2 and later.
38
+
39
+ Version `1.1.0` supports ActiveRecord 4.0 and 4.1
40
+
41
+ Version `0.6.0` supports earlier versions of ruby and ActiveRecord:
39
42
 
40
43
  * Ruby 1.8.7 or later
41
44
  * ActiveRecord 3.0.3 - 3.2.x
42
45
  * rgeo 0.3.20 or later
43
46
  * arel 2.0.6 or later
44
47
 
45
- See the README for the "rgeo" gem, a required dependency, for further
48
+ ### Spatial Factories for Columns
49
+
50
+ `rgeo_factory_generator` and related methods were removed in version 4.0, since column types
51
+ are no longer tied to their database column in ActiveRecord 4.2.
52
+
53
+ Register spatial factories in the `SpatialFactoryStore` singleton class. Each spatial type
54
+ in your ActiveRecord models will use the `SpatialFactoryStore` to retrieve
55
+ a factory matching the properties of its type. For example, you can set a different
56
+ spatial factory for point types, or for types matching a specific SRID, or having
57
+ a Z coordinate, or any combination of attributes.
58
+
59
+ The supported keys when registering a spatial type are listed here with their default values
60
+ and other allowed values:
61
+
62
+ ```
63
+ geo_type: "geometry", # point, polygon, line_string, geometry_collection,
64
+ # multi_line_string, multi_point, multi_polygon
65
+ has_m: false, # true
66
+ has_z: false, # true
67
+ sql_type: "geometry", # geography
68
+ srid: 0, # (any valid SRID)
69
+ ```
70
+
71
+ The default factories are `RGeo::Geographic.spherical_factory` for
72
+ geographic types, and `RGeo::Cartesian.preferred_factory` for geometric types.
73
+
74
+ Here is an example setup:
75
+
76
+ ```ruby
77
+ RGeo::ActiveRecord::SpatialFactoryStore.instance.tap do |config|
78
+ # By default, use the GEOS implementation for spatial columns.
79
+ config.default = RGeo::Geos.factory_generator
80
+
81
+ # But use a geographic implementation for point columns.
82
+ config.register(RGeo::Geographic.spherical_factory(srid: 4326), geo_type: "point")
83
+ end
84
+ ```
85
+
86
+ ### RGeo Dependency
87
+
88
+ See the README for the [rgeo](https://github.com/rgeo/rgeo) gem, a dependency, for further
46
89
  installation information.
47
90
 
48
91
  ### Development and support
@@ -7,7 +7,6 @@ module RGeo
7
7
  # mysqlspatial, and mysql2spatial) for usage examples.
8
8
 
9
9
  module SpatialToSql
10
-
11
10
  # Map a standard OGC SQL function name to the actual name used by
12
11
  # a particular database. This method should take a name and
13
12
  # return either the changed name or the original name.
@@ -30,9 +29,9 @@ module RGeo
30
29
  collector << name
31
30
  collector << "("
32
31
  collector << "DISTINCT " if node.distinct
33
- collector << exprs.join(', ')
32
+ collector << exprs.join(", ")
34
33
  collector << ")"
35
- collector << " AS #{ visit(node.alias, collector) }" if node.alias
34
+ collector << " AS #{visit(node.alias, collector)}" if node.alias
36
35
  collector
37
36
  end
38
37
 
@@ -117,6 +116,5 @@ module RGeo
117
116
  end
118
117
 
119
118
  # :startdoc:
120
-
121
119
  end
122
120
  end
@@ -6,7 +6,7 @@ module RGeo
6
6
  # Some default column constructors specifications for most spatial
7
7
  # databases. Individual adapters may add to or override this list.
8
8
  DEFAULT_SPATIAL_COLUMN_CONSTRUCTORS = {
9
- spatial: { :type => 'geometry' }.freeze,
9
+ spatial: { type: "geometry" }.freeze,
10
10
  geometry: {}.freeze,
11
11
  point: {}.freeze,
12
12
  line_string: {}.freeze,
@@ -19,8 +19,7 @@ module RGeo
19
19
 
20
20
  # Index definition struct with a spatial flag field.
21
21
 
22
- class SpatialIndexDefinition < Struct.new(:table, :name, :unique, :columns, :lengths, :orders, :where, :spatial)
23
- end
22
+ SpatialIndexDefinition = Struct.new(:table, :name, :unique, :columns, :lengths, :orders, :where, :spatial)
24
23
 
25
24
  # Returns a feature type module given a string type.
26
25
 
@@ -34,7 +33,6 @@ module RGeo
34
33
  when /^multipoint/i then ::RGeo::Feature::MultiPoint
35
34
  when /^multilinestring/i then ::RGeo::Feature::MultiLineString
36
35
  when /^multipolygon/i then ::RGeo::Feature::MultiPolygon
37
- else nil
38
36
  end
39
37
  end
40
38
  end
@@ -6,7 +6,7 @@ module RGeo
6
6
 
7
7
  module GeometryMixin
8
8
  # The default JSON generator Proc. Renders geometry fields as WKT.
9
- DEFAULT_JSON_GENERATOR = ::Proc.new{ |geom| geom.to_s }
9
+ DEFAULT_JSON_GENERATOR = ::Proc.new(&:to_s)
10
10
 
11
11
  @json_generator = DEFAULT_JSON_GENERATOR
12
12
 
@@ -26,8 +26,8 @@ module RGeo
26
26
  if block && !value
27
27
  value = block
28
28
  elsif value == :geojson
29
- require 'rgeo/geo_json'
30
- value = ::Proc.new{ |geom_| ::RGeo::GeoJSON.encode(geom_) }
29
+ require "rgeo/geo_json"
30
+ value = ::Proc.new { |geom_| ::RGeo::GeoJSON.encode(geom_) }
31
31
  end
32
32
  if value.is_a?(::Proc)
33
33
  @json_generator = value
@@ -54,5 +54,5 @@ module RGeo
54
54
  end
55
55
  end
56
56
 
57
- ::RGeo::Feature::MixinCollection::GLOBAL.for_type(::RGeo::Feature::Geometry).
58
- add(::RGeo::ActiveRecord::GeometryMixin)
57
+ ::RGeo::Feature::MixinCollection::GLOBAL.for_type(::RGeo::Feature::Geometry)
58
+ .add(::RGeo::ActiveRecord::GeometryMixin)
@@ -24,173 +24,169 @@ module RGeo
24
24
  #++
25
25
 
26
26
  def st_dimension
27
- ::RGeo::ActiveRecord::SpatialNamedFunction.new('ST_Dimension', [self], [false, true])
27
+ ::RGeo::ActiveRecord::SpatialNamedFunction.new("ST_Dimension", [self], [false, true])
28
28
  end
29
29
 
30
30
  def st_geometrytype
31
- ::RGeo::ActiveRecord::SpatialNamedFunction.new('ST_GeometryType', [self], [false, true])
31
+ ::RGeo::ActiveRecord::SpatialNamedFunction.new("ST_GeometryType", [self], [false, true])
32
32
  end
33
33
 
34
34
  def st_astext
35
- ::RGeo::ActiveRecord::SpatialNamedFunction.new('ST_AsText', [self], [false, true])
35
+ ::RGeo::ActiveRecord::SpatialNamedFunction.new("ST_AsText", [self], [false, true])
36
36
  end
37
37
 
38
38
  def st_asbinary
39
- ::RGeo::ActiveRecord::SpatialNamedFunction.new('ST_AsBinary', [self], [false, true])
39
+ ::RGeo::ActiveRecord::SpatialNamedFunction.new("ST_AsBinary", [self], [false, true])
40
40
  end
41
41
 
42
42
  def st_srid
43
- ::RGeo::ActiveRecord::SpatialNamedFunction.new('ST_SRID', [self], [false, true])
43
+ ::RGeo::ActiveRecord::SpatialNamedFunction.new("ST_SRID", [self], [false, true])
44
44
  end
45
45
 
46
46
  def st_isempty
47
- ::RGeo::ActiveRecord::SpatialNamedFunction.new('ST_IsEmpty', [self], [false, true])
47
+ ::RGeo::ActiveRecord::SpatialNamedFunction.new("ST_IsEmpty", [self], [false, true])
48
48
  end
49
49
 
50
50
  def st_issimple
51
- ::RGeo::ActiveRecord::SpatialNamedFunction.new('ST_IsSimple', [self], [false, true])
51
+ ::RGeo::ActiveRecord::SpatialNamedFunction.new("ST_IsSimple", [self], [false, true])
52
52
  end
53
53
 
54
54
  def st_boundary
55
- ::RGeo::ActiveRecord::SpatialNamedFunction.new('ST_Boundary', [self], [true, true])
55
+ ::RGeo::ActiveRecord::SpatialNamedFunction.new("ST_Boundary", [self], [true, true])
56
56
  end
57
57
 
58
58
  def st_envelope
59
- ::RGeo::ActiveRecord::SpatialNamedFunction.new('ST_Envelope', [self], [true, true])
59
+ ::RGeo::ActiveRecord::SpatialNamedFunction.new("ST_Envelope", [self], [true, true])
60
60
  end
61
61
 
62
62
  def st_equals(rhs)
63
- ::RGeo::ActiveRecord::SpatialNamedFunction.new('ST_Equals', [self, rhs], [false, true, true])
63
+ ::RGeo::ActiveRecord::SpatialNamedFunction.new("ST_Equals", [self, rhs], [false, true, true])
64
64
  end
65
65
 
66
66
  def st_disjoint(rhs)
67
- ::RGeo::ActiveRecord::SpatialNamedFunction.new('ST_Disjoint', [self, rhs], [false, true, true])
67
+ ::RGeo::ActiveRecord::SpatialNamedFunction.new("ST_Disjoint", [self, rhs], [false, true, true])
68
68
  end
69
69
 
70
70
  def st_intersects(rhs)
71
- ::RGeo::ActiveRecord::SpatialNamedFunction.new('ST_Intersects', [self, rhs], [false, true, true])
71
+ ::RGeo::ActiveRecord::SpatialNamedFunction.new("ST_Intersects", [self, rhs], [false, true, true])
72
72
  end
73
73
 
74
74
  def st_touches(rhs)
75
- ::RGeo::ActiveRecord::SpatialNamedFunction.new('ST_Touches', [self, rhs], [false, true, true])
75
+ ::RGeo::ActiveRecord::SpatialNamedFunction.new("ST_Touches", [self, rhs], [false, true, true])
76
76
  end
77
77
 
78
78
  def st_crosses(rhs)
79
- ::RGeo::ActiveRecord::SpatialNamedFunction.new('ST_Crosses', [self, rhs], [false, true, true])
79
+ ::RGeo::ActiveRecord::SpatialNamedFunction.new("ST_Crosses", [self, rhs], [false, true, true])
80
80
  end
81
81
 
82
82
  def st_within(rhs)
83
- ::RGeo::ActiveRecord::SpatialNamedFunction.new('ST_Within', [self, rhs], [false, true, true])
83
+ ::RGeo::ActiveRecord::SpatialNamedFunction.new("ST_Within", [self, rhs], [false, true, true])
84
84
  end
85
85
 
86
86
  def st_contains(rhs)
87
- ::RGeo::ActiveRecord::SpatialNamedFunction.new('ST_Contains', [self, rhs], [false, true, true])
87
+ ::RGeo::ActiveRecord::SpatialNamedFunction.new("ST_Contains", [self, rhs], [false, true, true])
88
88
  end
89
89
 
90
90
  def st_overlaps(rhs)
91
- ::RGeo::ActiveRecord::SpatialNamedFunction.new('ST_Overlaps', [self, rhs], [false, true, true])
91
+ ::RGeo::ActiveRecord::SpatialNamedFunction.new("ST_Overlaps", [self, rhs], [false, true, true])
92
92
  end
93
93
 
94
94
  def st_relate(rhs, matrix = nil)
95
95
  args = [self, rhs]
96
96
  args << matrix.to_s if matrix
97
- ::RGeo::ActiveRecord::SpatialNamedFunction.new('ST_Relate', args, [false, true, true, false])
97
+ ::RGeo::ActiveRecord::SpatialNamedFunction.new("ST_Relate", args, [false, true, true, false])
98
98
  end
99
99
 
100
100
  def st_distance(rhs, units = nil)
101
101
  args = [self, rhs]
102
102
  args << units.to_s if units
103
- ::RGeo::ActiveRecord::SpatialNamedFunction.new('ST_Distance', args, [false, true, true, false])
103
+ ::RGeo::ActiveRecord::SpatialNamedFunction.new("ST_Distance", args, [false, true, true, false])
104
104
  end
105
105
 
106
106
  def st_intersection(rhs)
107
- ::RGeo::ActiveRecord::SpatialNamedFunction.new('ST_Intersection', [self, rhs], [true, true, true])
107
+ ::RGeo::ActiveRecord::SpatialNamedFunction.new("ST_Intersection", [self, rhs], [true, true, true])
108
108
  end
109
109
 
110
110
  def st_difference(rhs)
111
- ::RGeo::ActiveRecord::SpatialNamedFunction.new('ST_Difference', [self, rhs], [true, true, true])
111
+ ::RGeo::ActiveRecord::SpatialNamedFunction.new("ST_Difference", [self, rhs], [true, true, true])
112
112
  end
113
113
 
114
114
  def st_union(rhs)
115
- ::RGeo::ActiveRecord::SpatialNamedFunction.new('ST_Union', [self, rhs], [true, true, true])
115
+ ::RGeo::ActiveRecord::SpatialNamedFunction.new("ST_Union", [self, rhs], [true, true, true])
116
116
  end
117
117
 
118
118
  def st_symdifference(rhs)
119
- ::RGeo::ActiveRecord::SpatialNamedFunction.new('ST_SymDifference', [self, rhs], [true, true, true])
119
+ ::RGeo::ActiveRecord::SpatialNamedFunction.new("ST_SymDifference", [self, rhs], [true, true, true])
120
120
  end
121
121
 
122
122
  def st_buffer(distance, units = nil)
123
123
  args = [self, distance.to_f]
124
124
  args << units.to_s if units
125
- ::RGeo::ActiveRecord::SpatialNamedFunction.new('ST_Buffer', args, [true, true, false])
125
+ ::RGeo::ActiveRecord::SpatialNamedFunction.new("ST_Buffer", args, [true, true, false])
126
126
  end
127
127
 
128
128
  def st_convexhull
129
- ::RGeo::ActiveRecord::SpatialNamedFunction.new('ST_ConvexHull', [self], [true, true])
129
+ ::RGeo::ActiveRecord::SpatialNamedFunction.new("ST_ConvexHull", [self], [true, true])
130
130
  end
131
131
 
132
-
133
132
  #--
134
133
  # Point functions
135
134
  #++
136
135
 
137
136
  def st_x
138
- ::RGeo::ActiveRecord::SpatialNamedFunction.new('ST_X', [self], [false, true])
137
+ ::RGeo::ActiveRecord::SpatialNamedFunction.new("ST_X", [self], [false, true])
139
138
  end
140
139
 
141
140
  def st_y
142
- ::RGeo::ActiveRecord::SpatialNamedFunction.new('ST_Y', [self], [false, true])
141
+ ::RGeo::ActiveRecord::SpatialNamedFunction.new("ST_Y", [self], [false, true])
143
142
  end
144
143
 
145
144
  def st_z
146
- ::RGeo::ActiveRecord::SpatialNamedFunction.new('ST_Z', [self], [false, true])
145
+ ::RGeo::ActiveRecord::SpatialNamedFunction.new("ST_Z", [self], [false, true])
147
146
  end
148
147
 
149
148
  def st_m
150
- ::RGeo::ActiveRecord::SpatialNamedFunction.new('ST_M', [self], [false, true])
149
+ ::RGeo::ActiveRecord::SpatialNamedFunction.new("ST_M", [self], [false, true])
151
150
  end
152
151
 
153
-
154
152
  #--
155
153
  # Curve functions
156
154
  #++
157
155
 
158
156
  def st_startpoint
159
- ::RGeo::ActiveRecord::SpatialNamedFunction.new('ST_StartPoint', [self], [true, true])
157
+ ::RGeo::ActiveRecord::SpatialNamedFunction.new("ST_StartPoint", [self], [true, true])
160
158
  end
161
159
 
162
160
  def st_endpoint
163
- ::RGeo::ActiveRecord::SpatialNamedFunction.new('ST_EndPoint', [self], [true, true])
161
+ ::RGeo::ActiveRecord::SpatialNamedFunction.new("ST_EndPoint", [self], [true, true])
164
162
  end
165
163
 
166
164
  def st_isclosed
167
- ::RGeo::ActiveRecord::SpatialNamedFunction.new('ST_IsClosed', [self], [false, true])
165
+ ::RGeo::ActiveRecord::SpatialNamedFunction.new("ST_IsClosed", [self], [false, true])
168
166
  end
169
167
 
170
168
  def st_isring
171
- ::RGeo::ActiveRecord::SpatialNamedFunction.new('ST_IsRing', [self], [false, true])
169
+ ::RGeo::ActiveRecord::SpatialNamedFunction.new("ST_IsRing", [self], [false, true])
172
170
  end
173
171
 
174
172
  def st_length(units = nil)
175
173
  args = [self]
176
174
  args << units.to_s if units
177
- ::RGeo::ActiveRecord::SpatialNamedFunction.new('ST_Length', args, [false, true, false])
175
+ ::RGeo::ActiveRecord::SpatialNamedFunction.new("ST_Length", args, [false, true, false])
178
176
  end
179
177
 
180
-
181
178
  #--
182
179
  # LineString functions
183
180
  #++
184
181
 
185
182
  def st_numpoints
186
- ::RGeo::ActiveRecord::SpatialNamedFunction.new('ST_NumPoints', [self], [false, true])
183
+ ::RGeo::ActiveRecord::SpatialNamedFunction.new("ST_NumPoints", [self], [false, true])
187
184
  end
188
185
 
189
186
  def st_pointn(n)
190
- ::RGeo::ActiveRecord::SpatialNamedFunction.new('ST_PointN', [self, n.to_i], [true, true, false])
187
+ ::RGeo::ActiveRecord::SpatialNamedFunction.new("ST_PointN", [self, n.to_i], [true, true, false])
191
188
  end
192
189
 
193
-
194
190
  #--
195
191
  # Surface functions
196
192
  #++
@@ -198,15 +194,15 @@ module RGeo
198
194
  def st_area(units = nil)
199
195
  args = [self]
200
196
  args << units.to_s if units
201
- ::RGeo::ActiveRecord::SpatialNamedFunction.new('ST_StartPoint', args, [false, true, false])
197
+ ::RGeo::ActiveRecord::SpatialNamedFunction.new("ST_StartPoint", args, [false, true, false])
202
198
  end
203
199
 
204
200
  def st_centroid
205
- ::RGeo::ActiveRecord::SpatialNamedFunction.new('ST_Centroid', [self], [true, true])
201
+ ::RGeo::ActiveRecord::SpatialNamedFunction.new("ST_Centroid", [self], [true, true])
206
202
  end
207
203
 
208
204
  def st_pointonsurface
209
- ::RGeo::ActiveRecord::SpatialNamedFunction.new('ST_PointOnSurface', [self], [true, true])
205
+ ::RGeo::ActiveRecord::SpatialNamedFunction.new("ST_PointOnSurface", [self], [true, true])
210
206
  end
211
207
 
212
208
  #--
@@ -214,17 +210,17 @@ module RGeo
214
210
  #++
215
211
 
216
212
  def st_exteriorring
217
- ::RGeo::ActiveRecord::SpatialNamedFunction.new('ST_ExteriorRing', [self], [true, true])
213
+ ::RGeo::ActiveRecord::SpatialNamedFunction.new("ST_ExteriorRing", [self], [true, true])
218
214
  end
219
215
 
220
216
  def st_numinteriorrings
221
217
  # Note: the name difference is intentional. The standard
222
218
  # names this function incorrectly.
223
- ::RGeo::ActiveRecord::SpatialNamedFunction.new('ST_NumInteriorRing', [self], [false, true])
219
+ ::RGeo::ActiveRecord::SpatialNamedFunction.new("ST_NumInteriorRing", [self], [false, true])
224
220
  end
225
221
 
226
222
  def st_interiorringn(n)
227
- ::RGeo::ActiveRecord::SpatialNamedFunction.new('ST_InteriorRingN', [self, n.to_i], [true, true, false])
223
+ ::RGeo::ActiveRecord::SpatialNamedFunction.new("ST_InteriorRingN", [self, n.to_i], [true, true, false])
228
224
  end
229
225
 
230
226
  #--
@@ -232,15 +228,13 @@ module RGeo
232
228
  #++
233
229
 
234
230
  def st_numgeometries
235
- ::RGeo::ActiveRecord::SpatialNamedFunction.new('ST_NumGeometries', [self], [false, true])
231
+ ::RGeo::ActiveRecord::SpatialNamedFunction.new("ST_NumGeometries", [self], [false, true])
236
232
  end
237
233
 
238
234
  def st_geometryn(n)
239
- ::RGeo::ActiveRecord::SpatialNamedFunction.new('ST_GeometryN', [self, n.to_i], [true, true, false])
235
+ ::RGeo::ActiveRecord::SpatialNamedFunction.new("ST_GeometryN", [self, n.to_i], [true, true, false])
240
236
  end
241
-
242
237
  end
243
-
244
238
  end
245
239
  end
246
240
 
@@ -249,9 +243,7 @@ end
249
243
  # Allow chaining of spatial expressions from attributes
250
244
  ::Arel::Attribute.send :include, ::RGeo::ActiveRecord::SpatialExpressions
251
245
 
252
-
253
246
  module Arel
254
-
255
247
  # Create a spatial constant node.
256
248
  # This node wraps a spatial value (such as an RGeo feature or a text
257
249
  # string in WKT format). It supports chaining with the functions
@@ -259,5 +251,4 @@ module Arel
259
251
  def self.spatial(arg)
260
252
  ::RGeo::ActiveRecord::SpatialConstantNode.new(arg)
261
253
  end
262
-
263
254
  end
@@ -1,5 +1,5 @@
1
1
  module RGeo
2
2
  module ActiveRecord
3
- VERSION = "4.0.0".freeze
3
+ VERSION = "4.0.1".freeze
4
4
  end
5
5
  end
@@ -4,11 +4,11 @@
4
4
  # ActiveRecord, and a set of tools and helpers for writing RGeo-based
5
5
  # spatial connection adapters.
6
6
 
7
- require 'rgeo'
8
- require 'active_record'
9
- require 'rgeo/active_record/version'
10
- require 'rgeo/active_record/spatial_expressions'
11
- require 'rgeo/active_record/spatial_factory_store'
12
- require 'rgeo/active_record/arel_spatial_queries'
13
- require 'rgeo/active_record/common_adapter_elements'
14
- require 'rgeo/active_record/geometry_mixin'
7
+ require "rgeo"
8
+ require "active_record"
9
+ require "rgeo/active_record/version"
10
+ require "rgeo/active_record/spatial_expressions"
11
+ require "rgeo/active_record/spatial_factory_store"
12
+ require "rgeo/active_record/arel_spatial_queries"
13
+ require "rgeo/active_record/common_adapter_elements"
14
+ require "rgeo/active_record/geometry_mixin"
@@ -1 +1 @@
1
- require 'rgeo/active_record'
1
+ require "rgeo/active_record"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rgeo-activerecord
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.0.0
4
+ version: 4.0.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: 2015-05-24 00:00:00.000000000 Z
11
+ date: 2015-12-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rgeo
@@ -99,11 +99,7 @@ files:
99
99
  - lib/rgeo/active_record/spatial_expressions.rb
100
100
  - lib/rgeo/active_record/spatial_factory_store.rb
101
101
  - lib/rgeo/active_record/version.rb
102
- - test/basic_test.rb
103
- - test/spatial_factory_store_test.rb
104
- - test/support/fake_record.rb
105
- - test/test_helper.rb
106
- homepage: http://github.com/rgeo/rgeo-activerecord
102
+ homepage: https://github.com/rgeo/rgeo-activerecord
107
103
  licenses: []
108
104
  metadata: {}
109
105
  post_install_message:
@@ -122,12 +118,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
122
118
  version: '0'
123
119
  requirements: []
124
120
  rubyforge_project:
125
- rubygems_version: 2.4.7
121
+ rubygems_version: 2.5.1
126
122
  signing_key:
127
123
  specification_version: 4
128
124
  summary: An RGeo module providing spatial extensions to ActiveRecord.
129
- test_files:
130
- - test/basic_test.rb
131
- - test/spatial_factory_store_test.rb
132
- - test/support/fake_record.rb
133
- - test/test_helper.rb
125
+ test_files: []
126
+ has_rdoc:
data/test/basic_test.rb DELETED
@@ -1,36 +0,0 @@
1
- require 'test_helper'
2
-
3
- class BasicTest < Minitest::Test
4
- class MyTable < ActiveRecord::Base
5
- end
6
-
7
- def test_version
8
- assert RGeo::ActiveRecord::VERSION
9
- end
10
-
11
- def test_default_as_json_wkt
12
- RGeo::ActiveRecord::GeometryMixin.set_json_generator(nil)
13
- factory = RGeo::Cartesian.preferred_factory
14
- point = factory.point(1, 2)
15
- assert_equal "POINT (1.0 2.0)", point.as_json
16
- end
17
-
18
- def test_default_as_json_geojson
19
- RGeo::ActiveRecord::GeometryMixin.set_json_generator(:geojson)
20
- factory = RGeo::Cartesian.preferred_factory
21
- point = factory.point(1, 2)
22
- assert_equal({'type' => 'Point', 'coordinates' => [1.0, 2.0]}, point.as_json)
23
- end
24
-
25
- def test_arel_visit_spatial_constant_node
26
- visitor = arel_visitor
27
- sql = visitor.accept(Arel.spatial('POINT (1.0 2.0)'), Arel::Collectors::PlainString.new)
28
- assert_equal("ST_WKTToSQL('POINT (1.0 2.0)')", sql.value)
29
- end
30
-
31
- private
32
-
33
- def arel_visitor
34
- Arel::Visitors::PostgreSQL.new(FakeRecord::Connection.new)
35
- end
36
- end
@@ -1,45 +0,0 @@
1
- require "test_helper"
2
-
3
- class SpatialFactoryStoreTest < Minitest::Test
4
- def test_default
5
- store.default = nil
6
- assert RGeo::Cartesian.preferred_factory === store.default
7
- end
8
-
9
- def test_set_default
10
- store.clear
11
- default_factory = Object.new
12
- store.default = default_factory
13
- assert_equal default_factory, store.default
14
- end
15
-
16
- def test_register
17
- store.clear
18
- default_factory = Object.new
19
- store.default = default_factory
20
-
21
- point_factory = Object.new
22
- store.register point_factory, geo_type: "point", srid: 4326
23
- assert_equal point_factory, store.factory(geo_type: "point", srid: 4326)
24
- assert_equal 1, store.registry.size
25
- assert_equal point_factory, store.factory(geo_type: "point", srid: 4326)
26
- assert_equal 1, store.registry.size
27
-
28
- polygon_factory = Object.new
29
- store.register polygon_factory, geo_type: "polygon"
30
- assert_equal polygon_factory, store.factory(geo_type: "polygon")
31
- assert_equal 2, store.registry.size
32
-
33
- z_point_factory = Object.new
34
- store.register z_point_factory, geo_type: "point", has_z: true
35
- assert_equal z_point_factory, store.factory(geo_type: "point", has_z: true)
36
-
37
- assert_equal default_factory, store.factory(geo_type: "linestring")
38
- end
39
-
40
- private
41
-
42
- def store
43
- RGeo::ActiveRecord::SpatialFactoryStore.instance
44
- end
45
- end
@@ -1,136 +0,0 @@
1
- # From https://github.com/rails/arel/master/test/support/fake_record.rb
2
- module FakeRecord
3
- class Column < Struct.new(:name, :type)
4
- end
5
-
6
- class Connection
7
- attr_reader :tables
8
- attr_accessor :visitor
9
-
10
- def initialize(visitor = nil)
11
- @tables = %w{ users photos developers products}
12
- @columns = {
13
- 'users' => [
14
- Column.new('id', :integer),
15
- Column.new('name', :string),
16
- Column.new('bool', :boolean),
17
- Column.new('created_at', :date)
18
- ],
19
- 'products' => [
20
- Column.new('id', :integer),
21
- Column.new('price', :decimal)
22
- ]
23
- }
24
- @columns_hash = {
25
- 'users' => Hash[@columns['users'].map { |x| [x.name, x] }],
26
- 'products' => Hash[@columns['products'].map { |x| [x.name, x] }]
27
- }
28
- @primary_keys = {
29
- 'users' => 'id',
30
- 'products' => 'id'
31
- }
32
- @visitor = visitor
33
- end
34
-
35
- def columns_hash table_name
36
- @columns_hash[table_name]
37
- end
38
-
39
- def primary_key name
40
- @primary_keys[name.to_s]
41
- end
42
-
43
- def table_exists? name
44
- @tables.include? name.to_s
45
- end
46
-
47
- def columns name, message = nil
48
- @columns[name.to_s]
49
- end
50
-
51
- def quote_table_name name
52
- "\"#{name.to_s}\""
53
- end
54
-
55
- def quote_column_name name
56
- "\"#{name.to_s}\""
57
- end
58
-
59
- def schema_cache
60
- self
61
- end
62
-
63
- def quote thing, column = nil
64
- if column && !thing.nil?
65
- case column.type
66
- when :integer
67
- thing = thing.to_i
68
- when :string
69
- thing = thing.to_s
70
- end
71
- end
72
-
73
- case thing
74
- when DateTime
75
- "'#{thing.strftime("%Y-%m-%d %H:%M:%S")}'"
76
- when Date
77
- "'#{thing.strftime("%Y-%m-%d")}'"
78
- when true
79
- "'t'"
80
- when false
81
- "'f'"
82
- when nil
83
- 'NULL'
84
- when Numeric
85
- thing
86
- else
87
- "'#{thing.to_s.gsub("'", "\\\\'")}'"
88
- end
89
- end
90
- end
91
-
92
- class ConnectionPool
93
- class Spec < Struct.new(:config)
94
- end
95
-
96
- attr_reader :spec, :connection
97
-
98
- def initialize
99
- @spec = Spec.new(:adapter => 'america')
100
- @connection = Connection.new
101
- @connection.visitor = Arel::Visitors::ToSql.new(connection)
102
- end
103
-
104
- def with_connection
105
- yield connection
106
- end
107
-
108
- def table_exists? name
109
- connection.tables.include? name.to_s
110
- end
111
-
112
- def columns_hash
113
- connection.columns_hash
114
- end
115
-
116
- def schema_cache
117
- connection
118
- end
119
-
120
- def quote thing, column = nil
121
- connection.quote thing, column
122
- end
123
- end
124
-
125
- class Base
126
- attr_accessor :connection_pool
127
-
128
- def initialize
129
- @connection_pool = ConnectionPool.new
130
- end
131
-
132
- def connection
133
- connection_pool.connection
134
- end
135
- end
136
- end
data/test/test_helper.rb DELETED
@@ -1,12 +0,0 @@
1
- require 'minitest/autorun'
2
- require 'rgeo/active_record'
3
- require 'support/fake_record'
4
-
5
- Arel::Visitors::PostgreSQL.send(:include, ::RGeo::ActiveRecord::SpatialToSql)
6
- Arel::Table.engine = FakeRecord::Base.new
7
-
8
- begin
9
- require 'byebug'
10
- rescue LoadError
11
- # ignore
12
- end