rails-geocoder 0.9.5 → 0.9.6

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG.rdoc CHANGED
@@ -2,6 +2,11 @@
2
2
 
3
3
  Per-release changes to Geocoder.
4
4
 
5
+ == 0.9.6 (2011 Jan 19)
6
+
7
+ * Fix incompatibility with will_paginate gem.
8
+ * Include table names in GROUP BY clause of nearby scope to avoid ambiguity in joins.
9
+
5
10
  == 0.9.5 (2010 Oct 15)
6
11
 
7
12
  * Fix broken PostgreSQL compatibility (now 100% compatible).
data/README.rdoc CHANGED
@@ -105,6 +105,8 @@ Please see the code for more methods and detailed information about arguments (e
105
105
 
106
106
  SQLite's lack of trigonometric functions requires an alternate implementation of the +near+ method (scope). When using SQLite, Geocoder will automatically use a less accurate algorithm for finding objects near a given point. Results of this algorithm should not be trusted too much as it will return objects that are outside the given radius.
107
107
 
108
+ It is also not possible to calculate distances between points without the trig functions so you cannot sort results by "nearness."
109
+
108
110
 
109
111
  === Discussion
110
112
 
data/lib/geocoder.rb CHANGED
@@ -74,7 +74,6 @@ module Geocoder
74
74
  # http://www.scribd.com/doc/2569355/Geo-Distance-Search-with-MySQL
75
75
  #
76
76
  def full_near_scope_options(latitude, longitude, radius, options)
77
- options[:order] ||= 'distance ASC'
78
77
  lat_attr = geocoder_options[:latitude]
79
78
  lon_attr = geocoder_options[:longitude]
80
79
  distance = "3956 * 2 * ASIN(SQRT(" +
@@ -83,6 +82,7 @@ module Geocoder
83
82
  "COS(#{lat_attr} * PI() / 180) * " +
84
83
  "POWER(SIN((#{longitude} - #{lon_attr}) * " +
85
84
  "PI() / 180 / 2), 2) ))"
85
+ options[:order] ||= "#{distance} ASC"
86
86
  default_near_scope_options(latitude, longitude, radius, options).merge(
87
87
  :select => "#{options[:select] || '*'}, #{distance} AS distance",
88
88
  :having => "#{distance} <= #{radius}"
@@ -115,7 +115,7 @@ module Geocoder
115
115
  conditions << obj.id
116
116
  end
117
117
  {
118
- :group => columns.map{ |c| c.name}.join(','),
118
+ :group => columns.map{ |c| "#{table_name}.#{c.name}" }.join(','),
119
119
  :order => options[:order],
120
120
  :limit => options[:limit],
121
121
  :offset => options[:offset],
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rails-geocoder
3
3
  version: !ruby/object:Gem::Version
4
- hash: 49
4
+ hash: 55
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 9
9
- - 5
10
- version: 0.9.5
9
+ - 6
10
+ version: 0.9.6
11
11
  platform: ruby
12
12
  authors:
13
13
  - Alex Reisner
@@ -15,41 +15,34 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-10-15 00:00:00 -04:00
18
+ date: 2011-01-18 00:00:00 -05:00
19
19
  default_executable:
20
20
  dependencies: []
21
21
 
22
- description: Geocoder adds object geocoding and database-agnostic distance calculations to Ruby on Rails. It does not rely on proprietary database functions so finding geocoded objects in a given area is easily done using out-of-the-box MySQL or even SQLite.
23
- email: alex@alexreisner.com
22
+ description: Geocoder adds object geocoding and distance calculations to ActiveRecord models. It does not rely on proprietary database functions so finding geocoded objects in a given area is easily done using out-of-the-box MySQL, PostgreSQL, or SQLite.
23
+ email:
24
+ - alex@alexreisner.com
24
25
  executables: []
25
26
 
26
27
  extensions: []
27
28
 
28
- extra_rdoc_files:
29
- - LICENSE
30
- - README.rdoc
29
+ extra_rdoc_files: []
30
+
31
31
  files:
32
- - .document
33
- - .gitignore
34
- - CHANGELOG.rdoc
35
- - LICENSE
36
- - README.rdoc
37
- - Rakefile
38
- - VERSION
39
- - init.rb
40
32
  - lib/geocoder.rb
41
- - lib/tasks/geocoder_tasks.rake
42
- - rails-geocoder.gemspec
43
- - test/fixtures/madison_square_garden.json
44
- - test/geocoder_test.rb
45
33
  - test/test_helper.rb
34
+ - test/geocoder_test.rb
35
+ - CHANGELOG.rdoc
36
+ - Rakefile
37
+ - README.rdoc
38
+ - LICENSE
46
39
  has_rdoc: true
47
40
  homepage: http://github.com/alexreisner/geocoder
48
41
  licenses: []
49
42
 
50
43
  post_install_message:
51
- rdoc_options:
52
- - --charset=UTF-8
44
+ rdoc_options: []
45
+
53
46
  require_paths:
54
47
  - lib
55
48
  required_ruby_version: !ruby/object:Gem::Requirement
@@ -76,7 +69,6 @@ rubyforge_project:
76
69
  rubygems_version: 1.3.7
77
70
  signing_key:
78
71
  specification_version: 3
79
- summary: Add geocoding functionality to Rails models.
80
- test_files:
81
- - test/test_helper.rb
82
- - test/geocoder_test.rb
72
+ summary: Simple, database-agnostic geocoding and distance calculations for Rails.
73
+ test_files: []
74
+
data/.document DELETED
@@ -1,5 +0,0 @@
1
- README.rdoc
2
- lib/**/*.rb
3
- bin/*
4
- features/**/*.feature
5
- LICENSE
data/.gitignore DELETED
@@ -1,5 +0,0 @@
1
- *.sw?
2
- .DS_Store
3
- coverage
4
- rdoc
5
- pkg
data/VERSION DELETED
@@ -1 +0,0 @@
1
- 0.9.5
data/init.rb DELETED
@@ -1 +0,0 @@
1
- require 'geocoder'
@@ -1,15 +0,0 @@
1
- def klass
2
- class_name = ENV['CLASS'] || ENV['class']
3
- raise "Please specify a CLASS (model)" unless class_name
4
- Object.const_get(class_name)
5
- end
6
-
7
- namespace :geocode do
8
-
9
- desc "Geocode all objects without coordinates."
10
- task :all => :environment do
11
- klass.not_geocoded.each do |obj|
12
- obj.fetch_coordinates!
13
- end
14
- end
15
- end
@@ -1,55 +0,0 @@
1
- # Generated by jeweler
2
- # DO NOT EDIT THIS FILE DIRECTLY
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
4
- # -*- encoding: utf-8 -*-
5
-
6
- Gem::Specification.new do |s|
7
- s.name = %q{rails-geocoder}
8
- s.version = "0.9.5"
9
-
10
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
- s.authors = ["Alex Reisner"]
12
- s.date = %q{2010-10-15}
13
- s.description = %q{Geocoder adds object geocoding and database-agnostic distance calculations to Ruby on Rails. It does not rely on proprietary database functions so finding geocoded objects in a given area is easily done using out-of-the-box MySQL or even SQLite.}
14
- s.email = %q{alex@alexreisner.com}
15
- s.extra_rdoc_files = [
16
- "LICENSE",
17
- "README.rdoc"
18
- ]
19
- s.files = [
20
- ".document",
21
- ".gitignore",
22
- "CHANGELOG.rdoc",
23
- "LICENSE",
24
- "README.rdoc",
25
- "Rakefile",
26
- "VERSION",
27
- "init.rb",
28
- "lib/geocoder.rb",
29
- "lib/tasks/geocoder_tasks.rake",
30
- "rails-geocoder.gemspec",
31
- "test/fixtures/madison_square_garden.json",
32
- "test/geocoder_test.rb",
33
- "test/test_helper.rb"
34
- ]
35
- s.homepage = %q{http://github.com/alexreisner/geocoder}
36
- s.rdoc_options = ["--charset=UTF-8"]
37
- s.require_paths = ["lib"]
38
- s.rubygems_version = %q{1.3.7}
39
- s.summary = %q{Add geocoding functionality to Rails models.}
40
- s.test_files = [
41
- "test/test_helper.rb",
42
- "test/geocoder_test.rb"
43
- ]
44
-
45
- if s.respond_to? :specification_version then
46
- current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
47
- s.specification_version = 3
48
-
49
- if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
50
- else
51
- end
52
- else
53
- end
54
- end
55
-
@@ -1,57 +0,0 @@
1
- {
2
- "status": "OK",
3
- "results": [ {
4
- "types": [ "street_address" ],
5
- "formatted_address": "4 Penn Plaza, New York, NY 10001, USA",
6
- "address_components": [ {
7
- "long_name": "4",
8
- "short_name": "4",
9
- "types": [ "street_number" ]
10
- }, {
11
- "long_name": "Penn Plaza",
12
- "short_name": "Penn Plaza",
13
- "types": [ "route" ]
14
- }, {
15
- "long_name": "Manhattan",
16
- "short_name": "Manhattan",
17
- "types": [ "sublocality", "political" ]
18
- }, {
19
- "long_name": "New York",
20
- "short_name": "New York",
21
- "types": [ "locality", "political" ]
22
- }, {
23
- "long_name": "New York",
24
- "short_name": "New York",
25
- "types": [ "administrative_area_level_2", "political" ]
26
- }, {
27
- "long_name": "New York",
28
- "short_name": "NY",
29
- "types": [ "administrative_area_level_1", "political" ]
30
- }, {
31
- "long_name": "United States",
32
- "short_name": "US",
33
- "types": [ "country", "political" ]
34
- }, {
35
- "long_name": "10001",
36
- "short_name": "10001",
37
- "types": [ "postal_code" ]
38
- } ],
39
- "geometry": {
40
- "location": {
41
- "lat": 40.7503540,
42
- "lng": -73.9933710
43
- },
44
- "location_type": "ROOFTOP",
45
- "viewport": {
46
- "southwest": {
47
- "lat": 40.7473324,
48
- "lng": -73.9965316
49
- },
50
- "northeast": {
51
- "lat": 40.7536276,
52
- "lng": -73.9902364
53
- }
54
- }
55
- }
56
- } ]
57
- }