rgeo-activerecord 6.0.0 → 7.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/History.md +29 -0
- data/README.md +57 -31
- data/lib/rgeo-activerecord.rb +2 -0
- data/lib/rgeo/active_record.rb +2 -0
- data/lib/rgeo/active_record/arel_spatial_queries.rb +15 -22
- data/lib/rgeo/active_record/common_adapter_elements.rb +2 -0
- data/lib/rgeo/active_record/geometry_mixin.rb +77 -8
- data/lib/rgeo/active_record/spatial_expressions.rb +2 -0
- data/lib/rgeo/active_record/spatial_factory_store.rb +54 -12
- data/lib/rgeo/active_record/version.rb +3 -1
- metadata +61 -29
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9c1442b0141a1655c582e412962a3328b702e52da302e3a4874a3d22ee3f8fbc
|
4
|
+
data.tar.gz: 86933cf076e3c728ea34d3918bff61f56baef30c7e31dce99e56093a2049a5cd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
-
[](https://rubygems.org/gems/rgeo-activerecord)
|
4
|
+
[](https://github.com/rgeo/rgeo-activerecord/actions?query=workflow%3A%22Tests%22)
|
5
5
|
[](https://codeclimate.com/github/rgeo/rgeo-activerecord)
|
6
6
|
|
7
|
-
RGeo::ActiveRecord is an optional [RGeo](http://github.com/
|
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
|
-
`
|
32
|
+
Version `6.1` supports ActiveRecord 5.x and 6.0 with `rgeo` 1.0+.
|
33
33
|
|
34
|
-
|
35
|
-
* rgeo 0.3.20 or later.
|
34
|
+
Version `6.0` supports ActiveRecord 5.x with `rgeo` 1.x.
|
36
35
|
|
37
|
-
|
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
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
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
|
-
|
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
|
54
|
-
in your
|
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
|
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:
|
64
|
-
|
65
|
-
has_m:
|
66
|
-
has_z:
|
67
|
-
sql_type:
|
68
|
-
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
|
-
```
|
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
|
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
|
-
|
115
|
-
|
140
|
+
- [Klaxit](https://www.klaxit.com)
|
141
|
+
- Goldfish Ads
|
116
142
|
|
117
143
|
### License
|
118
144
|
|
119
|
-
Copyright
|
145
|
+
Copyright 2020 Daniel Azuma, Tee Parham
|
120
146
|
|
121
147
|
https://github.com/rgeo/rgeo-activerecord/blob/master/LICENSE.txt
|
data/lib/rgeo-activerecord.rb
CHANGED
data/lib/rgeo/active_record.rb
CHANGED
@@ -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
|
-
|
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
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
collector <<
|
47
|
-
|
48
|
-
|
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
|
# 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
|
-
|
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,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
|
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
|
-
|
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
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
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
|
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:
|
4
|
+
version: 7.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
-
- Daniel Azuma
|
7
|
+
- Daniel Azuma
|
8
|
+
- Tee Parham
|
8
9
|
autorequire:
|
9
10
|
bindir: bin
|
10
11
|
cert_chain: []
|
11
|
-
date:
|
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:
|
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:
|
41
|
+
version: 1.0.0
|
27
42
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
43
|
+
name: appraisal
|
29
44
|
requirement: !ruby/object:Gem::Requirement
|
30
45
|
requirements:
|
31
46
|
- - "~>"
|
32
47
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
34
|
-
type: :
|
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: '
|
55
|
+
version: '2.1'
|
41
56
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
57
|
+
name: ffi-geos
|
43
58
|
requirement: !ruby/object:Gem::Requirement
|
44
59
|
requirements:
|
45
60
|
- - "~>"
|
46
61
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
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: '
|
69
|
+
version: '1.2'
|
55
70
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
71
|
+
name: minitest
|
57
72
|
requirement: !ruby/object:Gem::Requirement
|
58
73
|
requirements:
|
59
74
|
- - "~>"
|
60
75
|
- !ruby/object:Gem::Version
|
61
|
-
version: '
|
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: '
|
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:
|
99
|
+
name: rake
|
85
100
|
requirement: !ruby/object:Gem::Requirement
|
86
101
|
requirements:
|
87
102
|
- - "~>"
|
88
103
|
- !ruby/object:Gem::Version
|
89
|
-
version: '
|
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: '
|
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:
|
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:
|
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:
|
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.
|
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
|
-
|
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.
|