mongoid_geo 0.2.5 → 0.2.6
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.
- data/README.textile +5 -1
- data/lib/mongoid/geo/geo_near.rb +10 -5
- data/lib/mongoid_geo.rb +3 -1
- metadata +12 -12
data/README.textile
CHANGED
|
@@ -155,7 +155,11 @@ You can also use a #to_model method on an individual query result like this:
|
|
|
155
155
|
|
|
156
156
|
# the model returned also has a distance accessor populated with the distance calculated by running the geoNear query
|
|
157
157
|
|
|
158
|
-
@nearest_distance = Position.geoNear(another_address.location, :pos).first.to_model.distance@
|
|
158
|
+
@nearest_distance = Position.geoNear(another_address.location, :pos).first.to_model.distance@
|
|
159
|
+
|
|
160
|
+
You can now explicitly set/configure the Mongo DB version used. This will affect whether built-in Mongo DB distance calculation will be used or using standalone Ruby Haversine algorithm. By default the version is set to 1.5. See _geo_near_ specs for more details/info on this.
|
|
161
|
+
|
|
162
|
+
@Mongoid::Geo.mongo_db_version = 1.7@
|
|
159
163
|
|
|
160
164
|
h2. Mongoid Geo extra inclusions
|
|
161
165
|
|
data/lib/mongoid/geo/geo_near.rb
CHANGED
|
@@ -5,6 +5,10 @@ require 'mongoid/geo/haversine'
|
|
|
5
5
|
|
|
6
6
|
module Mongoid
|
|
7
7
|
module Geo
|
|
8
|
+
class << self
|
|
9
|
+
attr_accessor :mongo_db_version
|
|
10
|
+
end
|
|
11
|
+
|
|
8
12
|
module Distance
|
|
9
13
|
attr_reader :distance
|
|
10
14
|
|
|
@@ -25,12 +29,13 @@ module Mongoid
|
|
|
25
29
|
def to_models
|
|
26
30
|
clazz = first.clazz
|
|
27
31
|
ids = map(&:_id)
|
|
28
|
-
|
|
29
|
-
|
|
32
|
+
distance_hash = self.inject({}) do |result, item|
|
|
33
|
+
result[item._id] = item.distance
|
|
34
|
+
result
|
|
35
|
+
end
|
|
30
36
|
clazz.where(:_id.in => ids).to_a.map do |m|
|
|
31
37
|
m.extend(Mongoid::Geo::Distance)
|
|
32
|
-
m.set_distance
|
|
33
|
-
i += 1
|
|
38
|
+
m.set_distance distance_hash[m._id]
|
|
34
39
|
m
|
|
35
40
|
end
|
|
36
41
|
end
|
|
@@ -70,7 +75,7 @@ module Mongoid
|
|
|
70
75
|
lon,lat = center
|
|
71
76
|
query_result = clazz.collection.db.command(query)['results'].sort_by do |r|
|
|
72
77
|
loc = r['obj'][location_attribute.to_s]
|
|
73
|
-
r['distance'] = Mongoid::Geo::Haversine.distance(lat, lon, loc[1], loc[0])
|
|
78
|
+
r['distance'] = Mongoid::Geo::Haversine.distance(lat, lon, loc[1], loc[0]) if Mongoid::Geo.mongo_db_version < 1.7
|
|
74
79
|
r['clazz'] = clazz
|
|
75
80
|
end
|
|
76
81
|
end
|
data/lib/mongoid_geo.rb
CHANGED
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: mongoid_geo
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.2.
|
|
4
|
+
version: 0.2.6
|
|
5
5
|
prerelease:
|
|
6
6
|
platform: ruby
|
|
7
7
|
authors:
|
|
@@ -14,7 +14,7 @@ default_executable:
|
|
|
14
14
|
dependencies:
|
|
15
15
|
- !ruby/object:Gem::Dependency
|
|
16
16
|
name: rspec
|
|
17
|
-
requirement: &
|
|
17
|
+
requirement: &2156534080 !ruby/object:Gem::Requirement
|
|
18
18
|
none: false
|
|
19
19
|
requirements:
|
|
20
20
|
- - ! '>='
|
|
@@ -22,10 +22,10 @@ dependencies:
|
|
|
22
22
|
version: '2.4'
|
|
23
23
|
type: :development
|
|
24
24
|
prerelease: false
|
|
25
|
-
version_requirements: *
|
|
25
|
+
version_requirements: *2156534080
|
|
26
26
|
- !ruby/object:Gem::Dependency
|
|
27
27
|
name: mongoid
|
|
28
|
-
requirement: &
|
|
28
|
+
requirement: &2156533620 !ruby/object:Gem::Requirement
|
|
29
29
|
none: false
|
|
30
30
|
requirements:
|
|
31
31
|
- - ! '>='
|
|
@@ -33,10 +33,10 @@ dependencies:
|
|
|
33
33
|
version: 2.0.0.rc.6
|
|
34
34
|
type: :runtime
|
|
35
35
|
prerelease: false
|
|
36
|
-
version_requirements: *
|
|
36
|
+
version_requirements: *2156533620
|
|
37
37
|
- !ruby/object:Gem::Dependency
|
|
38
38
|
name: bson_ext
|
|
39
|
-
requirement: &
|
|
39
|
+
requirement: &2156533160 !ruby/object:Gem::Requirement
|
|
40
40
|
none: false
|
|
41
41
|
requirements:
|
|
42
42
|
- - ! '>='
|
|
@@ -44,10 +44,10 @@ dependencies:
|
|
|
44
44
|
version: 1.1.6
|
|
45
45
|
type: :runtime
|
|
46
46
|
prerelease: false
|
|
47
|
-
version_requirements: *
|
|
47
|
+
version_requirements: *2156533160
|
|
48
48
|
- !ruby/object:Gem::Dependency
|
|
49
49
|
name: activesupport
|
|
50
|
-
requirement: &
|
|
50
|
+
requirement: &2156532700 !ruby/object:Gem::Requirement
|
|
51
51
|
none: false
|
|
52
52
|
requirements:
|
|
53
53
|
- - ! '>='
|
|
@@ -55,10 +55,10 @@ dependencies:
|
|
|
55
55
|
version: 3.0.4
|
|
56
56
|
type: :runtime
|
|
57
57
|
prerelease: false
|
|
58
|
-
version_requirements: *
|
|
58
|
+
version_requirements: *2156532700
|
|
59
59
|
- !ruby/object:Gem::Dependency
|
|
60
60
|
name: hashie
|
|
61
|
-
requirement: &
|
|
61
|
+
requirement: &2156532240 !ruby/object:Gem::Requirement
|
|
62
62
|
none: false
|
|
63
63
|
requirements:
|
|
64
64
|
- - ! '>='
|
|
@@ -66,7 +66,7 @@ dependencies:
|
|
|
66
66
|
version: 0.4.0
|
|
67
67
|
type: :runtime
|
|
68
68
|
prerelease: false
|
|
69
|
-
version_requirements: *
|
|
69
|
+
version_requirements: *2156532240
|
|
70
70
|
description: Geo spatial extension on Mongoid 2, to add more geo-spatial capabilities
|
|
71
71
|
email:
|
|
72
72
|
- kmandrup@gmail.com
|
|
@@ -112,7 +112,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
112
112
|
version: 1.3.6
|
|
113
113
|
requirements: []
|
|
114
114
|
rubyforge_project:
|
|
115
|
-
rubygems_version: 1.6.
|
|
115
|
+
rubygems_version: 1.6.1
|
|
116
116
|
signing_key:
|
|
117
117
|
specification_version: 3
|
|
118
118
|
summary: Adds extra convenience methods for geo-spatial operations etc.
|