mongoid_geo 0.2.5 → 0.2.6

Sign up to get free protection for your applications and to get access to all the features.
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
 
@@ -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
- distances = map(&:distance)
29
- i = 0
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 distances[i]
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
@@ -1 +1,3 @@
1
- require 'mongoid/geo'
1
+ require 'mongoid/geo'
2
+
3
+ Mongoid::Geo.mongo_db_version = 1.5
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.5
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: &2157384840 !ruby/object:Gem::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: *2157384840
25
+ version_requirements: *2156534080
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: mongoid
28
- requirement: &2157384380 !ruby/object:Gem::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: *2157384380
36
+ version_requirements: *2156533620
37
37
  - !ruby/object:Gem::Dependency
38
38
  name: bson_ext
39
- requirement: &2157383920 !ruby/object:Gem::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: *2157383920
47
+ version_requirements: *2156533160
48
48
  - !ruby/object:Gem::Dependency
49
49
  name: activesupport
50
- requirement: &2157383460 !ruby/object:Gem::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: *2157383460
58
+ version_requirements: *2156532700
59
59
  - !ruby/object:Gem::Dependency
60
60
  name: hashie
61
- requirement: &2157383000 !ruby/object:Gem::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: *2157383000
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.0
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.