rgeo-activerecord 6.0.0 → 7.0.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
  SHA256:
3
- metadata.gz: cc063bb4bbfc97c0529b457dc2cb6c19d6d63510d75af7d8e07303c1a9be89fd
4
- data.tar.gz: fa23279bb841f851116abbc50812c829eba5fec97266570a2a6ddf6545b7d2d2
3
+ metadata.gz: 9c1442b0141a1655c582e412962a3328b702e52da302e3a4874a3d22ee3f8fbc
4
+ data.tar.gz: 86933cf076e3c728ea34d3918bff61f56baef30c7e31dce99e56093a2049a5cd
5
5
  SHA512:
6
- metadata.gz: a1944e0d2cdea5ebba58e2a40ff8002fd67d82e53a293e1e17458e8688452aed4c503bd5713bbd0f35ba9b592314d8a9868c41339030c247e567267ab336a425
7
- data.tar.gz: dce64d689fcb2f51656a31f094ececac017524df5f70efa17702e18e08192b81128573ea2537fac5aadaafa2f31943824c03ed7366a485536ce14e7c7c2d9d57
6
+ metadata.gz: d4b10c1f4ab732aa52545bce0f920fd36511e68c4c560b5f29f3b5907243e82cc8723bb54abd7ce1277a1857d2783749e0d1bc8a452117d4b9b7f5f6da1262ea
7
+ data.tar.gz: 46b20c80597ca7dd822987fcf2592c56d68c0f413684eb5e87de012a5139f77a8b6ded059553001b5791c7f6be867a9897b01b4aca4ef5dda361d4259482d79b
data/History.md CHANGED
@@ -1,3 +1,32 @@
1
+ ### 7.0.0 / 2020-12-15
2
+
3
+ * Update visit_* methods and Arel interface to support RGeo features.
4
+ * Rework SpatialFactoryStore to support hierarchical matches and fallbacks.
5
+
6
+ ### 6.2.2 / 2020-11-20
7
+
8
+ * Removed `Arel::Visitor::DepthFirst` for ActiveRecord 6.1 compatibility (kamipo)
9
+
10
+ ### 6.2.1 / 2019-07-01
11
+
12
+ * Include GeometryMixin in Cartesian modules (#52, andreasknoepfle)
13
+
14
+
15
+ ### 6.2.0 / 2019-05-09
16
+
17
+ * Allow ActiveRecord 6.0 (#50, corneverbruggen)
18
+
19
+
20
+ ### 6.1.0 / 2018-12-01
21
+
22
+ * Allow rgeo 2.0
23
+
24
+
25
+ ### 6.0.0 / 2017-12-02
26
+
27
+ * Require rgeo 1.0
28
+
29
+
1
30
  ### 5.1.1 / 2017-10-02
2
31
 
3
32
  * Fix #st_area #43
data/README.md CHANGED
@@ -1,10 +1,10 @@
1
1
  ## RGeo::ActiveRecord
2
2
 
3
- [![Gem Version](https://badge.fury.io/rb/rgeo-activerecord.svg)](http://badge.fury.io/rb/rgeo-activerecord)
4
- [![Build Status](https://travis-ci.org/rgeo/rgeo-activerecord.svg?branch=master)](https://travis-ci.org/rgeo/rgeo-activerecord)
3
+ [![Gem version](https://img.shields.io/gem/v/rgeo-activerecord)](https://rubygems.org/gems/rgeo-activerecord)
4
+ [![GitHub Workflow Status](https://img.shields.io/github/workflow/status/rgeo/rgeo-activerecord/Tests)](https://github.com/rgeo/rgeo-activerecord/actions?query=workflow%3A%22Tests%22)
5
5
  [![Code Climate](https://codeclimate.com/github/rgeo/rgeo-activerecord.png)](https://codeclimate.com/github/rgeo/rgeo-activerecord)
6
6
 
7
- RGeo::ActiveRecord is an optional [RGeo](http://github.com/dazuma/rgeo) module
7
+ RGeo::ActiveRecord is an optional [RGeo](http://github.com/rgeo/rgeo) module
8
8
  providing spatial extensions for ActiveRecord, as well as a set of helpers for
9
9
  writing spatial ActiveRecord adapters based on RGeo.
10
10
 
@@ -29,51 +29,48 @@ Gemfile:
29
29
  gem 'rgeo-activerecord'
30
30
  ```
31
31
 
32
- `rgeo-activerecord` has the following requirements:
32
+ Version `6.1` supports ActiveRecord 5.x and 6.0 with `rgeo` 1.0+.
33
33
 
34
- * Ruby 1.9.3 or later
35
- * rgeo 0.3.20 or later.
34
+ Version `6.0` supports ActiveRecord 5.x with `rgeo` 1.x.
36
35
 
37
- The latest version supports ActiveRecord 4.2 and later.
36
+ Version `5.0` supports ActiveRecord 5.0 and 5.1, with `rgeo` 0.6.
37
+
38
+ Version `4.0` supports ActiveRecord 4.2.
38
39
 
39
40
  Version `1.1.0` supports ActiveRecord 4.0 and 4.1
40
41
 
41
42
  Version `0.6.0` supports earlier versions of ruby and ActiveRecord:
42
43
 
43
- * Ruby 1.8.7 or later
44
- * ActiveRecord 3.0.3 - 3.2.x
45
- * rgeo 0.3.20 or later
46
- * arel 2.0.6 or later
44
+ - Ruby 1.8.7 or later
45
+ - ActiveRecord 3.0.3 - 3.2.x
46
+ - rgeo 0.3.20 or later
47
+ - arel 2.0.6 or later
47
48
 
48
49
  ### Spatial Factories for Columns
49
50
 
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.
51
+ **_This is an introduction. More details are available in the [wiki entry](https://github.com/rgeo/rgeo-activerecord/wiki/Spatial-Factory-Store)._**
52
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
53
+ Register spatial factories in the `SpatialFactoryStore` singleton class to parse spatial data. Each spatial column
54
+ in your models will use the `SpatialFactoryStore` to parse the stored WKB into an RGeo Feature. The factory from the `SpatialFactoryStore` is chosen based on metadata from the spatial column and the attributes with which the factory was registered to the store. For example, you can set a factory for point types, for types matching a specific SRID, having
57
55
  a Z coordinate, or any combination of attributes.
58
56
 
59
- The supported keys when registering a spatial type are listed here with their default values
60
- and other allowed values:
57
+ The supported keys when registering a spatial type are listed here with their expected values:
61
58
 
62
59
  ```
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)
60
+ geo_type: string # geometry, point, polygon, line_string, geometry_collection,
61
+ # multi_line_string, multi_point, multi_polygon
62
+ has_m: boolean # true, false
63
+ has_z: boolean # true, false
64
+ sql_type: string # geometry, geography
65
+ srid: int # (any valid SRID)
69
66
  ```
70
67
 
71
- The default factories are `RGeo::Geographic.spherical_factory` for
68
+ The default factories are `RGeo::Geographic.spherical_factory` for
72
69
  geographic types, and `RGeo::Cartesian.preferred_factory` for geometric types.
73
70
 
74
71
  Here is an example setup:
75
72
 
76
- ```ruby
73
+ ```rb
77
74
  RGeo::ActiveRecord::SpatialFactoryStore.instance.tap do |config|
78
75
  # By default, use the GEOS implementation for spatial columns.
79
76
  config.default = RGeo::Geos.factory_generator
@@ -83,6 +80,33 @@ RGeo::ActiveRecord::SpatialFactoryStore.instance.tap do |config|
83
80
  end
84
81
  ```
85
82
 
83
+ _NOTE: `rgeo_factory_generator` and related methods were removed in version 4.0, since column types
84
+ are no longer tied to their database column in ActiveRecord 4.2._
85
+
86
+ ### Spatial Queries
87
+
88
+ RGeo-ActiveRecord provides an Arel interface to use functions commonly found in spatial databases. The interface also allows for the creation of your own spatial functions if they are not defined.
89
+
90
+ Here is an example using `st_contains`:
91
+
92
+ ```rb
93
+ point = RGeo::Geos.factory(srid: 0).point(1,1)
94
+
95
+ buildings = Building.arel_table
96
+ containing_buiildings = Building.where(buildings[:geom].st_contains(point))
97
+ ```
98
+
99
+ or using the `Arel.spatial` node:
100
+
101
+ ```rb
102
+ point = "SRID=0;POINT(1,1)"
103
+
104
+ buildings = Building.arel_table
105
+ containing_buiildings = Building.where(buildings[:geom].st_contains(Arel.spatial(point)))
106
+ ```
107
+
108
+ _Note: If you pass a WKT representation into an st_function, you should prepend the string with SRID=your_srid, otherwise the database will assume SRID=0 which may cause errors on certain operations._
109
+
86
110
  ### RGeo Dependency
87
111
 
88
112
  See the README for the [rgeo](https://github.com/rgeo/rgeo) gem, a dependency, for further
@@ -107,15 +131,17 @@ http://groups.google.com/group/rgeo-users
107
131
  ### Acknowledgments
108
132
 
109
133
  [Daniel Azuma](http://www.daniel-azuma.com) created RGeo.
110
- [Tee Parham](http://twitter.com/teeparham) is the current maintainer.
134
+ [Tee Parham](http://twitter.com/teeparham) is a former maintainer.
135
+ [Keith Doggett](http://www.github.com/keithdoggett) is a current maintainer.
136
+ [Ulysse Buonomo](http://www.github.com/BuonOmo) is a current maintainer.
111
137
 
112
138
  Development is supported by:
113
139
 
114
- * [Pirq](http://pirq.com)
115
- * [Neighborland](https://neighborland.com)
140
+ - [Klaxit](https://www.klaxit.com)
141
+ - Goldfish Ads
116
142
 
117
143
  ### License
118
144
 
119
- Copyright 2015 Daniel Azuma, Tee Parham
145
+ Copyright 2020 Daniel Azuma, Tee Parham
120
146
 
121
147
  https://github.com/rgeo/rgeo-activerecord/blob/master/LICENSE.txt
@@ -1 +1,3 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "rgeo/active_record"
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "rgeo"
2
4
  require "active_record"
3
5
  require "rgeo/active_record/version"
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RGeo
2
4
  module ActiveRecord
3
5
  # A set of common Arel visitor hacks for spatial ToSql visitors.
@@ -22,14 +24,13 @@ module RGeo
22
24
 
23
25
  def visit_RGeo_ActiveRecord_SpatialNamedFunction(node, collector)
24
26
  name = st_func(node.name)
25
- exprs = []
26
- node.expressions.each_with_index do |expr, index|
27
- exprs << (node.spatial_argument?(index) ? visit_in_spatial_context(expr, collector) : visit(expr, collector))
28
- end
29
27
  collector << name
30
28
  collector << "("
31
29
  collector << "DISTINCT " if node.distinct
32
- collector << exprs.join(", ")
30
+ node.expressions.each_with_index do |expr, index|
31
+ node.spatial_argument?(index) ? visit_in_spatial_context(expr, collector) : visit(expr, collector)
32
+ collector << ", " unless index == node.expressions.size - 1
33
+ end
33
34
  collector << ")"
34
35
  collector << " AS #{visit(node.alias, collector)}" if node.alias
35
36
  collector
@@ -39,13 +40,15 @@ module RGeo
39
40
  # The node must be a string (in which case it is treated as WKT),
40
41
  # an RGeo feature, or a spatial attribute.
41
42
  def visit_in_spatial_context(node, collector)
42
- case node
43
- when String
44
- collector << "#{st_func('ST_WKTToSQL')}(#{quote(node)})"
45
- when RGeo::Feature::Instance
46
- collector << visit_RGeo_Feature_Instance(node, collector)
47
- when RGeo::Cartesian::BoundingBox
48
- collector << visit_RGeo_Cartesian_BoundingBox(node, collector)
43
+ if node.is_a?(String)
44
+ collector << "#{st_func('ST_GeomFromText')}(#{quote(node)})"
45
+ elsif node.is_a?(RGeo::Feature::Instance)
46
+ srid = node.srid
47
+ collector << "#{st_func('ST_GeomFromText')}(#{quote(node.to_s)}, #{srid})"
48
+ elsif node.is_a?(RGeo::Cartesian::BoundingBox)
49
+ geom = node.to_geometry
50
+ srid = geom.srid
51
+ collector << "#{st_func('ST_GeomFromText')}(#{quote(geom.to_s)}, #{srid})"
49
52
  else
50
53
  visit(node, collector)
51
54
  end
@@ -84,16 +87,6 @@ module RGeo
84
87
  alias :visit_RGeo_Cartesian_BoundingBox :visit_String
85
88
  end
86
89
 
87
- Arel::Visitors::DepthFirst.class_eval do
88
- alias :visit_RGeo_Feature_Instance :terminal
89
- alias :visit_RGeo_Cartesian_BoundingBox :terminal
90
- end
91
-
92
- Arel::Visitors::ToSql.class_eval do
93
- alias :visit_RGeo_Feature_Instance :visit_String
94
- alias :visit_RGeo_Cartesian_BoundingBox :visit_String
95
- end
96
-
97
90
  # A NamedFunction subclass that keeps track of the spatial-ness of
98
91
  # the arguments and return values, so that it can provide context to
99
92
  # visitors that want to interpret syntax differently when dealing with
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RGeo
2
4
  module ActiveRecord
3
5
  # Return a feature type module given a string type.
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RGeo
2
4
  module ActiveRecord
3
5
  # This module is mixed into all geometry objects. It provides an
@@ -29,11 +31,7 @@ module RGeo
29
31
  require "rgeo/geo_json"
30
32
  value = proc { |geom| GeoJSON.encode(geom) }
31
33
  end
32
- if value.is_a?(Proc)
33
- @json_generator = value
34
- else
35
- @json_generator = DEFAULT_JSON_GENERATOR
36
- end
34
+ @json_generator = value.is_a?(Proc) ? value : DEFAULT_JSON_GENERATOR
37
35
  end
38
36
 
39
37
  # Given a feature, returns an object that can be serialized as JSON
@@ -51,8 +49,79 @@ module RGeo
51
49
  GeometryMixin.generate_json(self)
52
50
  end
53
51
  end
52
+
53
+ # include this module in every RGeo feature type
54
+ [
55
+ Geographic::ProjectedGeometryCollectionImpl,
56
+ Geographic::ProjectedLinearRingImpl,
57
+ Geographic::ProjectedLineImpl,
58
+ Geographic::ProjectedLineStringImpl,
59
+ Geographic::ProjectedMultiLineStringImpl,
60
+ Geographic::ProjectedMultiPointImpl,
61
+ Geographic::ProjectedMultiPolygonImpl,
62
+ Geographic::ProjectedPointImpl,
63
+ Geographic::ProjectedPolygonImpl,
64
+
65
+ Geographic::SphericalGeometryCollectionImpl,
66
+ Geographic::SphericalLinearRingImpl,
67
+ Geographic::SphericalLineImpl,
68
+ Geographic::SphericalLineStringImpl,
69
+ Geographic::SphericalMultiLineStringImpl,
70
+ Geographic::SphericalMultiPointImpl,
71
+ Geographic::SphericalMultiPolygonImpl,
72
+ Geographic::SphericalPointImpl,
73
+ Geographic::SphericalPolygonImpl,
74
+
75
+ Geos::ZMGeometryCollectionImpl,
76
+ Geos::ZMGeometryImpl,
77
+ Geos::ZMLinearRingImpl,
78
+ Geos::ZMLineImpl,
79
+ Geos::ZMLineStringImpl,
80
+ Geos::ZMMultiLineStringImpl,
81
+ Geos::ZMMultiPointImpl,
82
+ Geos::ZMMultiPolygonImpl,
83
+ Geos::ZMPointImpl,
84
+ Geos::ZMPolygonImpl,
85
+
86
+ Cartesian::GeometryCollectionImpl,
87
+ Cartesian::LinearRingImpl,
88
+ Cartesian::LineImpl,
89
+ Cartesian::LineStringImpl,
90
+ Cartesian::MultiLineStringImpl,
91
+ Cartesian::MultiPointImpl,
92
+ Cartesian::MultiPolygonImpl,
93
+ Cartesian::PointImpl,
94
+ Cartesian::PolygonImpl
95
+ ].each { |klass| klass.include(GeometryMixin) }
96
+
97
+ if RGeo::Geos.capi_supported?
98
+ [
99
+ Geos::CAPIGeometryCollectionImpl,
100
+ Geos::CAPIGeometryImpl,
101
+ Geos::CAPILinearRingImpl,
102
+ Geos::CAPILineImpl,
103
+ Geos::CAPILineStringImpl,
104
+ Geos::CAPIMultiLineStringImpl,
105
+ Geos::CAPIMultiPointImpl,
106
+ Geos::CAPIMultiPolygonImpl,
107
+ Geos::CAPIPointImpl,
108
+ Geos::CAPIPolygonImpl,
109
+ ].each { |klass| klass.include(GeometryMixin) }
110
+ end
111
+
112
+ if RGeo::Geos.ffi_supported?
113
+ [
114
+ Geos::FFIGeometryCollectionImpl,
115
+ Geos::FFIGeometryImpl,
116
+ Geos::FFILinearRingImpl,
117
+ Geos::FFILineImpl,
118
+ Geos::FFILineStringImpl,
119
+ Geos::FFIMultiLineStringImpl,
120
+ Geos::FFIMultiPointImpl,
121
+ Geos::FFIMultiPolygonImpl,
122
+ Geos::FFIPointImpl,
123
+ Geos::FFIPolygonImpl,
124
+ ].each { |klass| klass.include(GeometryMixin) }
125
+ end
54
126
  end
55
127
  end
56
-
57
- RGeo::Feature::MixinCollection::GLOBAL.for_type(RGeo::Feature::Geometry)
58
- .add(RGeo::ActiveRecord::GeometryMixin)
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RGeo
2
4
  module ActiveRecord
3
5
  # Returns true if spatial expressions (i.e. the methods in the
@@ -1,17 +1,20 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RGeo
2
4
  module ActiveRecord
3
5
  class SpatialFactoryStore
4
6
  include Singleton
7
+ Entry = Struct.new(:attrs, :factory)
5
8
 
6
9
  attr_accessor :registry
7
10
 
8
11
  def initialize
9
- @registry = {}
12
+ @registry = []
10
13
  @default = nil
11
14
  end
12
15
 
13
16
  def register(factory, attrs = {})
14
- registry[key(attrs)] = factory
17
+ registry.push(Entry.new(filter_attrs(attrs), factory))
15
18
  end
16
19
 
17
20
  def default(attrs = {})
@@ -23,11 +26,11 @@ module RGeo
23
26
  end
24
27
 
25
28
  def factory(attrs)
26
- registry[key(attrs)] || default(attrs)
29
+ closest_factory(attrs) || default(attrs)
27
30
  end
28
31
 
29
32
  def clear
30
- @registry = {}
33
+ @registry = []
31
34
  end
32
35
 
33
36
  private
@@ -48,14 +51,53 @@ module RGeo
48
51
  }
49
52
  end
50
53
 
51
- def key(attrs)
52
- {
53
- geo_type: "geometry",
54
- has_m: false,
55
- has_z: false,
56
- sql_type: "geometry",
57
- srid: 0,
58
- }.merge(attrs).hash
54
+ def filter_attrs(attrs)
55
+ attrs.slice(:geo_type, :has_m, :has_z, :sql_type, :srid)
56
+ end
57
+
58
+ ##
59
+ # Match attrs to the closest equal to or less specific factory
60
+ #
61
+ # That means that attrs can at most be matched to an Entry with the same
62
+ # number of keys as it. But could match with a factory with only 1 key
63
+ # in its attrs.
64
+ #
65
+ # Examples:
66
+ # attrs = {sql_type: "geometry" }, entry_attrs = {sql_type: "geometry", geo_type: "point"}
67
+ # is not a match because the entry is more specific than attrs
68
+ #
69
+ # attrs = {sql_type: "geometry", geo_type: "point"}, entry_attrs = {sql_type: "geometry"}
70
+ # is a match because the entry is less specific than attrs and would be the fallback for all "geometry" types
71
+ #
72
+ # attrs = {sql_type: "geometry", geo_type: "point"}, entry_attrs = {sql_type: "geometry", geo_type: "linestring"}
73
+ # is not a match because there are mismatched keys
74
+ #
75
+ # If there is no match, nil is returned
76
+ def closest_factory(attrs)
77
+ max_matches = 0
78
+ registry.reduce(nil) do |selected_fac, entry|
79
+ cmp = cmp_attrs(attrs, entry.attrs)
80
+ if cmp > max_matches
81
+ max_matches = cmp
82
+ entry.factory
83
+ else
84
+ selected_fac
85
+ end
86
+ end
87
+ end
88
+
89
+ ##
90
+ # Returns number of common key/values
91
+ # or -1 if oth is bigger than attrs, or they have a mismatched key/value pair
92
+ def cmp_attrs(attrs, oth)
93
+ return -1 if oth.size > attrs.size
94
+ matches = 0
95
+ attrs.each do |k, v|
96
+ next if oth[k].nil?
97
+ return -1 unless v == oth[k]
98
+ matches += 1
99
+ end
100
+ matches
59
101
  end
60
102
  end
61
103
  end
@@ -1,5 +1,7 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RGeo
2
4
  module ActiveRecord
3
- VERSION = "6.0.0".freeze
5
+ VERSION = "7.0.0"
4
6
  end
5
7
  end
metadata CHANGED
@@ -1,71 +1,86 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rgeo-activerecord
3
3
  version: !ruby/object:Gem::Version
4
- version: 6.0.0
4
+ version: 7.0.0
5
5
  platform: ruby
6
6
  authors:
7
- - Daniel Azuma, Tee Parham
7
+ - Daniel Azuma
8
+ - Tee Parham
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2017-12-02 00:00:00.000000000 Z
12
+ date: 2020-12-18 00:00:00.000000000 Z
12
13
  dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: activerecord
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - ">="
19
+ - !ruby/object:Gem::Version
20
+ version: '5.0'
21
+ type: :runtime
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - ">="
26
+ - !ruby/object:Gem::Version
27
+ version: '5.0'
13
28
  - !ruby/object:Gem::Dependency
14
29
  name: rgeo
15
30
  requirement: !ruby/object:Gem::Requirement
16
31
  requirements:
17
- - - "~>"
32
+ - - ">="
18
33
  - !ruby/object:Gem::Version
19
- version: '1.0'
34
+ version: 1.0.0
20
35
  type: :runtime
21
36
  prerelease: false
22
37
  version_requirements: !ruby/object:Gem::Requirement
23
38
  requirements:
24
- - - "~>"
39
+ - - ">="
25
40
  - !ruby/object:Gem::Version
26
- version: '1.0'
41
+ version: 1.0.0
27
42
  - !ruby/object:Gem::Dependency
28
- name: activerecord
43
+ name: appraisal
29
44
  requirement: !ruby/object:Gem::Requirement
30
45
  requirements:
31
46
  - - "~>"
32
47
  - !ruby/object:Gem::Version
33
- version: '5.0'
34
- type: :runtime
48
+ version: '2.1'
49
+ type: :development
35
50
  prerelease: false
36
51
  version_requirements: !ruby/object:Gem::Requirement
37
52
  requirements:
38
53
  - - "~>"
39
54
  - !ruby/object:Gem::Version
40
- version: '5.0'
55
+ version: '2.1'
41
56
  - !ruby/object:Gem::Dependency
42
- name: minitest
57
+ name: ffi-geos
43
58
  requirement: !ruby/object:Gem::Requirement
44
59
  requirements:
45
60
  - - "~>"
46
61
  - !ruby/object:Gem::Version
47
- version: '5.8'
62
+ version: '1.2'
48
63
  type: :development
49
64
  prerelease: false
50
65
  version_requirements: !ruby/object:Gem::Requirement
51
66
  requirements:
52
67
  - - "~>"
53
68
  - !ruby/object:Gem::Version
54
- version: '5.8'
69
+ version: '1.2'
55
70
  - !ruby/object:Gem::Dependency
56
- name: rake
71
+ name: minitest
57
72
  requirement: !ruby/object:Gem::Requirement
58
73
  requirements:
59
74
  - - "~>"
60
75
  - !ruby/object:Gem::Version
61
- version: '12.0'
76
+ version: '5.8'
62
77
  type: :development
63
78
  prerelease: false
64
79
  version_requirements: !ruby/object:Gem::Requirement
65
80
  requirements:
66
81
  - - "~>"
67
82
  - !ruby/object:Gem::Version
68
- version: '12.0'
83
+ version: '5.8'
69
84
  - !ruby/object:Gem::Dependency
70
85
  name: mocha
71
86
  requirement: !ruby/object:Gem::Requirement
@@ -81,37 +96,54 @@ dependencies:
81
96
  - !ruby/object:Gem::Version
82
97
  version: '1.1'
83
98
  - !ruby/object:Gem::Dependency
84
- name: appraisal
99
+ name: rake
85
100
  requirement: !ruby/object:Gem::Requirement
86
101
  requirements:
87
102
  - - "~>"
88
103
  - !ruby/object:Gem::Version
89
- version: '2.1'
104
+ version: '12.0'
90
105
  type: :development
91
106
  prerelease: false
92
107
  version_requirements: !ruby/object:Gem::Requirement
93
108
  requirements:
94
109
  - - "~>"
95
110
  - !ruby/object:Gem::Version
96
- version: '2.1'
111
+ version: '12.0'
97
112
  - !ruby/object:Gem::Dependency
98
113
  name: rgeo-geojson
99
114
  requirement: !ruby/object:Gem::Requirement
100
115
  requirements:
101
- - - "~>"
116
+ - - ">="
102
117
  - !ruby/object:Gem::Version
103
- version: '1.0'
118
+ version: 1.0.0
104
119
  type: :development
105
120
  prerelease: false
106
121
  version_requirements: !ruby/object:Gem::Requirement
107
122
  requirements:
108
- - - "~>"
123
+ - - ">="
124
+ - !ruby/object:Gem::Version
125
+ version: 1.0.0
126
+ - !ruby/object:Gem::Dependency
127
+ name: simplecov
128
+ requirement: !ruby/object:Gem::Requirement
129
+ requirements:
130
+ - - ">="
131
+ - !ruby/object:Gem::Version
132
+ version: 0.20.0
133
+ type: :development
134
+ prerelease: false
135
+ version_requirements: !ruby/object:Gem::Requirement
136
+ requirements:
137
+ - - ">="
109
138
  - !ruby/object:Gem::Version
110
- version: '1.0'
139
+ version: 0.20.0
111
140
  description: RGeo is a geospatial data library for Ruby. RGeo::ActiveRecord is an
112
141
  optional RGeo module providing some spatial extensions to ActiveRecord, as well
113
142
  as common tools used by RGeo-based spatial adapters.
114
- email: dazuma@gmail.com, parhameter@gmail.com
143
+ email:
144
+ - dazuma@gmail.com
145
+ - parhameter@gmail.com
146
+ - kfdoggett@gmail.com
115
147
  executables: []
116
148
  extensions: []
117
149
  extra_rdoc_files: []
@@ -128,7 +160,8 @@ files:
128
160
  - lib/rgeo/active_record/spatial_factory_store.rb
129
161
  - lib/rgeo/active_record/version.rb
130
162
  homepage: https://github.com/rgeo/rgeo-activerecord
131
- licenses: []
163
+ licenses:
164
+ - BSD-3-Clause
132
165
  metadata: {}
133
166
  post_install_message:
134
167
  rdoc_options: []
@@ -138,15 +171,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
138
171
  requirements:
139
172
  - - ">="
140
173
  - !ruby/object:Gem::Version
141
- version: 2.2.2
174
+ version: 2.3.0
142
175
  required_rubygems_version: !ruby/object:Gem::Requirement
143
176
  requirements:
144
177
  - - ">="
145
178
  - !ruby/object:Gem::Version
146
179
  version: '0'
147
180
  requirements: []
148
- rubyforge_project:
149
- rubygems_version: 2.7.0
181
+ rubygems_version: 3.0.8
150
182
  signing_key:
151
183
  specification_version: 4
152
184
  summary: An RGeo module providing spatial extensions to ActiveRecord.