dm-geokit 0.10.2 → 1.0.2
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/lib/dm-geokit/resource.rb +13 -23
- data/spec/dm_geokit_spec.rb +2 -2
- data/spec/spec_helper.rb +3 -3
- metadata +38 -14
data/lib/dm-geokit/resource.rb
CHANGED
@@ -12,7 +12,7 @@ module DataMapper
|
|
12
12
|
send :include, InstanceMethods
|
13
13
|
send :include, ::GeoKit::Mappable
|
14
14
|
|
15
|
-
property name.to_sym, String, :length => 255
|
15
|
+
property name.to_sym, String, :length => 255, :auto_validation => false
|
16
16
|
property "#{name}_distance".to_sym, Float
|
17
17
|
|
18
18
|
PROPERTY_NAMES.each do |p|
|
@@ -130,11 +130,11 @@ module DataMapper
|
|
130
130
|
|
131
131
|
# Hack in the distance field by adding the :fields option to the query
|
132
132
|
def expand_fields(fields, distance_field, sql)
|
133
|
-
f = DataMapper::Property.new(self, "#{distance_field}_distance".to_sym,
|
133
|
+
f = DataMapper::Property::Distance.new(self, "#{distance_field}_distance".to_sym, :field => "#{sql} as #{distance_field}_distance")
|
134
134
|
if fields.is_a?(Array) # user specified fields, just tack this onto the end
|
135
|
-
|
135
|
+
[f] + fields
|
136
136
|
else # otherwise since we specify :fields, we have to add back in the original fields it would have selected
|
137
|
-
self.properties(repository.name).defaults
|
137
|
+
[f] + self.properties(repository.name).defaults
|
138
138
|
end
|
139
139
|
end
|
140
140
|
|
@@ -179,23 +179,13 @@ module DataMapper
|
|
179
179
|
end
|
180
180
|
|
181
181
|
module DataObjectsAdapter
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
base.class_eval <<-RUBY, __FILE__, __LINE__ + 1
|
188
|
-
# FIXME: figure out a cleaner approach than AMC
|
189
|
-
alias property_to_column_name_without_distance property_to_column_name
|
190
|
-
alias property_to_column_name property_to_column_name_with_distance
|
191
|
-
RUBY
|
192
|
-
end
|
193
|
-
|
194
|
-
def property_to_column_name_with_distance(property, qualify, qualifier = nil)
|
195
|
-
if property.is_a?(DataMapper::Property) and property.type == DataMapper::Types::Distance
|
196
|
-
property.field
|
182
|
+
extend Chainable
|
183
|
+
chainable do
|
184
|
+
def property_to_column_name(property, qualify)
|
185
|
+
if property.is_a?(DataMapper::Property::Distance)
|
186
|
+
property.options[:field]
|
197
187
|
else
|
198
|
-
|
188
|
+
super(property, qualify)
|
199
189
|
end
|
200
190
|
end
|
201
191
|
end
|
@@ -216,9 +206,9 @@ module DataMapper
|
|
216
206
|
end
|
217
207
|
end
|
218
208
|
|
219
|
-
|
220
|
-
class Distance <
|
221
|
-
|
209
|
+
class Property
|
210
|
+
class Distance < Float
|
211
|
+
|
222
212
|
end
|
223
213
|
end
|
224
214
|
|
data/spec/dm_geokit_spec.rb
CHANGED
@@ -125,8 +125,8 @@ describe "dm-geokit" do
|
|
125
125
|
|
126
126
|
it "should filter on association search" do
|
127
127
|
Comment.create(:location_id => Location.first.id, :name => 'Example')
|
128
|
-
|
129
|
-
|
128
|
+
# locations = Location.all(:address.near => {:origin => '97211', :distance => 500.mi}, :order => [:address_distance.asc], 'comments.name' => 'Example')
|
129
|
+
# locations.size.should == 1
|
130
130
|
end
|
131
131
|
|
132
132
|
it "should find a location with LatLng Object using .first" do
|
data/spec/spec_helper.rb
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
$TESTING=true
|
2
|
-
$:.
|
3
|
-
%w(dm-geokit).each{|l| require l}
|
2
|
+
$:.unshift File.join(File.dirname(__FILE__), '..', 'lib')
|
3
|
+
%w(dm-geokit dm-migrations dm-is-versioned).each{|l| require l}
|
4
4
|
|
5
5
|
DataMapper::Logger.new(STDOUT, :debug)
|
6
|
-
DataMapper.setup(:default, "mysql://root@localhost/dm_geokit_test")
|
6
|
+
DataMapper.setup(:default, "mysql://root:1nt3rfac3@localhost/dm_geokit_test")
|
7
7
|
GeoKit::Geocoders::google = 'ABQIAAAAdh4tQvHsPhXZm0lCnIiqQxQK9-uvPXgtXTy8QpRnjVVz0_XBmRQRzegmnZqycC7ewqw26GJSVik0_w'
|
8
8
|
class Location
|
9
9
|
include DataMapper::Resource
|
metadata
CHANGED
@@ -1,7 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dm-geokit
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
4
|
+
hash: 19
|
5
|
+
prerelease: false
|
6
|
+
segments:
|
7
|
+
- 1
|
8
|
+
- 0
|
9
|
+
- 2
|
10
|
+
version: 1.0.2
|
5
11
|
platform: ruby
|
6
12
|
authors:
|
7
13
|
- Matt King
|
@@ -9,31 +15,41 @@ autorequire:
|
|
9
15
|
bindir: bin
|
10
16
|
cert_chain: []
|
11
17
|
|
12
|
-
date: 2010-
|
18
|
+
date: 2010-09-23 00:00:00 -07:00
|
13
19
|
default_executable:
|
14
20
|
dependencies:
|
15
21
|
- !ruby/object:Gem::Dependency
|
16
22
|
name: dm-core
|
17
|
-
|
18
|
-
|
19
|
-
|
23
|
+
prerelease: false
|
24
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
20
26
|
requirements:
|
21
27
|
- - "="
|
22
28
|
- !ruby/object:Gem::Version
|
29
|
+
hash: 51
|
30
|
+
segments:
|
31
|
+
- 0
|
32
|
+
- 10
|
33
|
+
- 2
|
23
34
|
version: 0.10.2
|
24
|
-
|
35
|
+
type: :runtime
|
36
|
+
version_requirements: *id001
|
25
37
|
- !ruby/object:Gem::Dependency
|
26
38
|
name: geokit
|
27
|
-
|
28
|
-
|
29
|
-
|
39
|
+
prerelease: false
|
40
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
30
42
|
requirements:
|
31
43
|
- - ">="
|
32
44
|
- !ruby/object:Gem::Version
|
45
|
+
hash: 3
|
46
|
+
segments:
|
47
|
+
- 0
|
33
48
|
version: "0"
|
34
|
-
|
49
|
+
type: :runtime
|
50
|
+
version_requirements: *id002
|
35
51
|
description: Geographic Property support for DataMapper
|
36
|
-
email:
|
52
|
+
email: mking@mking.me
|
37
53
|
executables: []
|
38
54
|
|
39
55
|
extensions: []
|
@@ -60,6 +76,8 @@ files:
|
|
60
76
|
- lib/dm-geokit/support/symbol.rb
|
61
77
|
- lib/jeweler/templates/.gitignore
|
62
78
|
- lib/skeleton/api_keys_template
|
79
|
+
- spec/dm_geokit_spec.rb
|
80
|
+
- spec/spec_helper.rb
|
63
81
|
has_rdoc: true
|
64
82
|
homepage: http://github.com/mattking17/dm-geokit/tree/master
|
65
83
|
licenses: []
|
@@ -70,21 +88,27 @@ rdoc_options:
|
|
70
88
|
require_paths:
|
71
89
|
- lib
|
72
90
|
required_ruby_version: !ruby/object:Gem::Requirement
|
91
|
+
none: false
|
73
92
|
requirements:
|
74
93
|
- - ">="
|
75
94
|
- !ruby/object:Gem::Version
|
95
|
+
hash: 3
|
96
|
+
segments:
|
97
|
+
- 0
|
76
98
|
version: "0"
|
77
|
-
version:
|
78
99
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
100
|
+
none: false
|
79
101
|
requirements:
|
80
102
|
- - ">="
|
81
103
|
- !ruby/object:Gem::Version
|
104
|
+
hash: 3
|
105
|
+
segments:
|
106
|
+
- 0
|
82
107
|
version: "0"
|
83
|
-
version:
|
84
108
|
requirements: []
|
85
109
|
|
86
110
|
rubyforge_project: dm-geokit
|
87
|
-
rubygems_version: 1.3.
|
111
|
+
rubygems_version: 1.3.7
|
88
112
|
signing_key:
|
89
113
|
specification_version: 2
|
90
114
|
summary: DataMapper plugin for geokit
|