geocoder 0.9.10 → 0.9.11
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.
Potentially problematic release.
This version of geocoder might be problematic. Click here for more details.
- data/.gitignore +1 -0
 - data/CHANGELOG.rdoc +10 -0
 - data/LICENSE +1 -1
 - data/README.rdoc +118 -31
 - data/VERSION +1 -1
 - data/lib/geocoder.rb +56 -14
 - data/lib/geocoder/cache.rb +70 -0
 - data/lib/geocoder/calculations.rb +162 -22
 - data/lib/geocoder/configuration.rb +46 -9
 - data/lib/geocoder/lookups/base.rb +40 -9
 - data/lib/geocoder/lookups/freegeoip.rb +4 -6
 - data/lib/geocoder/lookups/geocoder_ca.rb +44 -0
 - data/lib/geocoder/lookups/google.rb +8 -5
 - data/lib/geocoder/lookups/yahoo.rb +6 -4
 - data/lib/geocoder/orms/active_record.rb +85 -39
 - data/lib/geocoder/orms/active_record_legacy.rb +8 -4
 - data/lib/geocoder/orms/base.rb +24 -21
 - data/lib/geocoder/request.rb +1 -1
 - data/lib/geocoder/results/base.rb +0 -14
 - data/lib/geocoder/results/geocoder_ca.rb +58 -0
 - data/lib/geocoder/results/google.rb +16 -4
 - data/test/fixtures/geocoder_ca_madison_square_garden.json +1 -0
 - data/test/fixtures/geocoder_ca_no_results.json +1 -0
 - data/test/fixtures/geocoder_ca_reverse.json +34 -0
 - data/test/fixtures/google_no_locality.json +51 -0
 - data/test/geocoder_test.rb +220 -64
 - data/test/test_helper.rb +48 -9
 - metadata +15 -14
 
    
        data/test/test_helper.rb
    CHANGED
    
    | 
         @@ -38,6 +38,10 @@ module ActiveRecord 
     | 
|
| 
       38 
38 
     | 
    
         
             
              end
         
     | 
| 
       39 
39 
     | 
    
         
             
            end
         
     | 
| 
       40 
40 
     | 
    
         | 
| 
      
 41 
     | 
    
         
            +
            # simulate Rails module so Railtie gets loaded
         
     | 
| 
      
 42 
     | 
    
         
            +
            module Rails
         
     | 
| 
      
 43 
     | 
    
         
            +
            end
         
     | 
| 
      
 44 
     | 
    
         
            +
             
     | 
| 
       41 
45 
     | 
    
         
             
            # Require Geocoder after ActiveRecord simulator.
         
     | 
| 
       42 
46 
     | 
    
         
             
            require 'geocoder'
         
     | 
| 
       43 
47 
     | 
    
         
             
            require "geocoder/lookups/base"
         
     | 
| 
         @@ -47,26 +51,53 @@ require "geocoder/lookups/base" 
     | 
|
| 
       47 
51 
     | 
    
         
             
            #
         
     | 
| 
       48 
52 
     | 
    
         
             
            module Geocoder
         
     | 
| 
       49 
53 
     | 
    
         
             
              module Lookup
         
     | 
| 
      
 54 
     | 
    
         
            +
                class Base
         
     | 
| 
      
 55 
     | 
    
         
            +
                  private #-----------------------------------------------------------------
         
     | 
| 
      
 56 
     | 
    
         
            +
                  def read_fixture(file)
         
     | 
| 
      
 57 
     | 
    
         
            +
                    File.read(File.join("test", "fixtures", file)).strip.gsub(/\n\s*/, "")
         
     | 
| 
      
 58 
     | 
    
         
            +
                  end
         
     | 
| 
      
 59 
     | 
    
         
            +
                end
         
     | 
| 
      
 60 
     | 
    
         
            +
             
     | 
| 
       50 
61 
     | 
    
         
             
                class Google < Base
         
     | 
| 
       51 
62 
     | 
    
         
             
                  private #-----------------------------------------------------------------
         
     | 
| 
       52 
63 
     | 
    
         
             
                  def fetch_raw_data(query, reverse = false)
         
     | 
| 
       53 
     | 
    
         
            -
                     
     | 
| 
       54 
     | 
    
         
            -
                     
     | 
| 
      
 64 
     | 
    
         
            +
                    raise TimeoutError if query == "timeout"
         
     | 
| 
      
 65 
     | 
    
         
            +
                    file = case query
         
     | 
| 
      
 66 
     | 
    
         
            +
                      when "no results";  :no_results
         
     | 
| 
      
 67 
     | 
    
         
            +
                      when "no locality"; :no_locality
         
     | 
| 
      
 68 
     | 
    
         
            +
                      else                :madison_square_garden
         
     | 
| 
      
 69 
     | 
    
         
            +
                    end
         
     | 
| 
      
 70 
     | 
    
         
            +
                    read_fixture "google_#{file}.json"
         
     | 
| 
       55 
71 
     | 
    
         
             
                  end
         
     | 
| 
       56 
72 
     | 
    
         
             
                end
         
     | 
| 
       57 
73 
     | 
    
         | 
| 
       58 
74 
     | 
    
         
             
                class Yahoo < Base
         
     | 
| 
       59 
75 
     | 
    
         
             
                  private #-----------------------------------------------------------------
         
     | 
| 
       60 
76 
     | 
    
         
             
                  def fetch_raw_data(query, reverse = false)
         
     | 
| 
      
 77 
     | 
    
         
            +
                    raise TimeoutError if query == "timeout"
         
     | 
| 
       61 
78 
     | 
    
         
             
                    file = query == "no results" ? :no_results : :madison_square_garden
         
     | 
| 
       62 
     | 
    
         
            -
                     
     | 
| 
      
 79 
     | 
    
         
            +
                    read_fixture "yahoo_#{file}.json"
         
     | 
| 
      
 80 
     | 
    
         
            +
                  end
         
     | 
| 
      
 81 
     | 
    
         
            +
                end
         
     | 
| 
      
 82 
     | 
    
         
            +
             
     | 
| 
      
 83 
     | 
    
         
            +
                class GeocoderCa < Base
         
     | 
| 
      
 84 
     | 
    
         
            +
                  private #-----------------------------------------------------------------
         
     | 
| 
      
 85 
     | 
    
         
            +
                  def fetch_raw_data(query, reverse = false)
         
     | 
| 
      
 86 
     | 
    
         
            +
                    raise TimeoutError if query == "timeout"
         
     | 
| 
      
 87 
     | 
    
         
            +
                    if reverse
         
     | 
| 
      
 88 
     | 
    
         
            +
                      read_fixture "geocoder_ca_reverse.json"
         
     | 
| 
      
 89 
     | 
    
         
            +
                    else
         
     | 
| 
      
 90 
     | 
    
         
            +
                      file = query == "no results" ? :no_results : :madison_square_garden
         
     | 
| 
      
 91 
     | 
    
         
            +
                      read_fixture "geocoder_ca_#{file}.json"
         
     | 
| 
      
 92 
     | 
    
         
            +
                    end
         
     | 
| 
       63 
93 
     | 
    
         
             
                  end
         
     | 
| 
       64 
94 
     | 
    
         
             
                end
         
     | 
| 
       65 
95 
     | 
    
         | 
| 
       66 
96 
     | 
    
         
             
                class Freegeoip < Base
         
     | 
| 
       67 
97 
     | 
    
         
             
                  private #-----------------------------------------------------------------
         
     | 
| 
       68 
98 
     | 
    
         
             
                  def fetch_raw_data(query, reverse = false)
         
     | 
| 
       69 
     | 
    
         
            -
                     
     | 
| 
      
 99 
     | 
    
         
            +
                    raise TimeoutError if query == "timeout"
         
     | 
| 
      
 100 
     | 
    
         
            +
                    read_fixture "freegeoip_74_200_247_59.json"
         
     | 
| 
       70 
101 
     | 
    
         
             
                  end
         
     | 
| 
       71 
102 
     | 
    
         
             
                end
         
     | 
| 
       72 
103 
     | 
    
         
             
              end
         
     | 
| 
         @@ -103,9 +134,9 @@ end 
     | 
|
| 
       103 
134 
     | 
    
         
             
            # Geocoded model with block.
         
     | 
| 
       104 
135 
     | 
    
         
             
            #
         
     | 
| 
       105 
136 
     | 
    
         
             
            class Event < ActiveRecord::Base
         
     | 
| 
       106 
     | 
    
         
            -
              geocoded_by :address do |obj, 
     | 
| 
       107 
     | 
    
         
            -
                if result
         
     | 
| 
       108 
     | 
    
         
            -
                  obj. 
     | 
| 
      
 137 
     | 
    
         
            +
              geocoded_by :address do |obj,results|
         
     | 
| 
      
 138 
     | 
    
         
            +
                if result = results.first
         
     | 
| 
      
 139 
     | 
    
         
            +
                  obj.coords_string = "#{result.latitude},#{result.longitude}"
         
     | 
| 
       109 
140 
     | 
    
         
             
                end
         
     | 
| 
       110 
141 
     | 
    
         
             
              end
         
     | 
| 
       111 
142 
     | 
    
         | 
| 
         @@ -120,8 +151,8 @@ end 
     | 
|
| 
       120 
151 
     | 
    
         
             
            # Reverse geocoded model with block.
         
     | 
| 
       121 
152 
     | 
    
         
             
            #
         
     | 
| 
       122 
153 
     | 
    
         
             
            class Party < ActiveRecord::Base
         
     | 
| 
       123 
     | 
    
         
            -
              reverse_geocoded_by :latitude, :longitude do |obj, 
     | 
| 
       124 
     | 
    
         
            -
                if result
         
     | 
| 
      
 154 
     | 
    
         
            +
              reverse_geocoded_by :latitude, :longitude do |obj,results|
         
     | 
| 
      
 155 
     | 
    
         
            +
                if result = results.first
         
     | 
| 
       125 
156 
     | 
    
         
             
                  obj.country = result.country_code
         
     | 
| 
       126 
157 
     | 
    
         
             
                end
         
     | 
| 
       127 
158 
     | 
    
         
             
              end
         
     | 
| 
         @@ -161,4 +192,12 @@ class Test::Unit::TestCase 
     | 
|
| 
       161 
192 
     | 
    
         
             
                  :msg => ["Madison Square Garden", 40.750354, -73.993371]
         
     | 
| 
       162 
193 
     | 
    
         
             
                }[abbrev]
         
     | 
| 
       163 
194 
     | 
    
         
             
              end
         
     | 
| 
      
 195 
     | 
    
         
            +
             
     | 
| 
      
 196 
     | 
    
         
            +
              def all_lookups
         
     | 
| 
      
 197 
     | 
    
         
            +
                Geocoder.send(:valid_lookups)
         
     | 
| 
      
 198 
     | 
    
         
            +
              end
         
     | 
| 
      
 199 
     | 
    
         
            +
             
     | 
| 
      
 200 
     | 
    
         
            +
              def street_lookups
         
     | 
| 
      
 201 
     | 
    
         
            +
                all_lookups - [:freegeoip]
         
     | 
| 
      
 202 
     | 
    
         
            +
              end
         
     | 
| 
       164 
203 
     | 
    
         
             
            end
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,12 +1,8 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification 
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: geocoder
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version 
         
     | 
| 
       4 
     | 
    
         
            -
              prerelease:  
     | 
| 
       5 
     | 
    
         
            -
               
     | 
| 
       6 
     | 
    
         
            -
                - 0
         
     | 
| 
       7 
     | 
    
         
            -
                - 9
         
     | 
| 
       8 
     | 
    
         
            -
                - 10
         
     | 
| 
       9 
     | 
    
         
            -
              version: 0.9.10
         
     | 
| 
      
 4 
     | 
    
         
            +
              prerelease: 
         
     | 
| 
      
 5 
     | 
    
         
            +
              version: 0.9.11
         
     | 
| 
       10 
6 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       11 
7 
     | 
    
         
             
            authors: 
         
     | 
| 
       12 
8 
     | 
    
         
             
              - Alex Reisner
         
     | 
| 
         @@ -14,11 +10,11 @@ autorequire: 
     | 
|
| 
       14 
10 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       15 
11 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       16 
12 
     | 
    
         | 
| 
       17 
     | 
    
         
            -
            date: 2011-03- 
     | 
| 
      
 13 
     | 
    
         
            +
            date: 2011-03-25 00:00:00 -04:00
         
     | 
| 
       18 
14 
     | 
    
         
             
            default_executable: 
         
     | 
| 
       19 
15 
     | 
    
         
             
            dependencies: []
         
     | 
| 
       20 
16 
     | 
    
         | 
| 
       21 
     | 
    
         
            -
            description: Provides object geocoding (by street or IP address), reverse geocoding (coordinates to street address), and distance calculations 
     | 
| 
      
 17 
     | 
    
         
            +
            description: Provides object geocoding (by street or IP address), reverse geocoding (coordinates to street address), and distance calculations. Designed for Rails but works with other Rack frameworks too.
         
     | 
| 
       22 
18 
     | 
    
         
             
            email: 
         
     | 
| 
       23 
19 
     | 
    
         
             
              - alex@alexreisner.com
         
     | 
| 
       24 
20 
     | 
    
         
             
            executables: []
         
     | 
| 
         @@ -35,10 +31,12 @@ files: 
     | 
|
| 
       35 
31 
     | 
    
         
             
              - Rakefile
         
     | 
| 
       36 
32 
     | 
    
         
             
              - VERSION
         
     | 
| 
       37 
33 
     | 
    
         
             
              - lib/geocoder.rb
         
     | 
| 
      
 34 
     | 
    
         
            +
              - lib/geocoder/cache.rb
         
     | 
| 
       38 
35 
     | 
    
         
             
              - lib/geocoder/calculations.rb
         
     | 
| 
       39 
36 
     | 
    
         
             
              - lib/geocoder/configuration.rb
         
     | 
| 
       40 
37 
     | 
    
         
             
              - lib/geocoder/lookups/base.rb
         
     | 
| 
       41 
38 
     | 
    
         
             
              - lib/geocoder/lookups/freegeoip.rb
         
     | 
| 
      
 39 
     | 
    
         
            +
              - lib/geocoder/lookups/geocoder_ca.rb
         
     | 
| 
       42 
40 
     | 
    
         
             
              - lib/geocoder/lookups/google.rb
         
     | 
| 
       43 
41 
     | 
    
         
             
              - lib/geocoder/lookups/yahoo.rb
         
     | 
| 
       44 
42 
     | 
    
         
             
              - lib/geocoder/orms/active_record.rb
         
     | 
| 
         @@ -48,12 +46,17 @@ files: 
     | 
|
| 
       48 
46 
     | 
    
         
             
              - lib/geocoder/request.rb
         
     | 
| 
       49 
47 
     | 
    
         
             
              - lib/geocoder/results/base.rb
         
     | 
| 
       50 
48 
     | 
    
         
             
              - lib/geocoder/results/freegeoip.rb
         
     | 
| 
      
 49 
     | 
    
         
            +
              - lib/geocoder/results/geocoder_ca.rb
         
     | 
| 
       51 
50 
     | 
    
         
             
              - lib/geocoder/results/google.rb
         
     | 
| 
       52 
51 
     | 
    
         
             
              - lib/geocoder/results/yahoo.rb
         
     | 
| 
       53 
52 
     | 
    
         
             
              - lib/tasks/geocoder.rake
         
     | 
| 
       54 
53 
     | 
    
         
             
              - test/fixtures/freegeoip_74_200_247_59.json
         
     | 
| 
      
 54 
     | 
    
         
            +
              - test/fixtures/geocoder_ca_madison_square_garden.json
         
     | 
| 
      
 55 
     | 
    
         
            +
              - test/fixtures/geocoder_ca_no_results.json
         
     | 
| 
      
 56 
     | 
    
         
            +
              - test/fixtures/geocoder_ca_reverse.json
         
     | 
| 
       55 
57 
     | 
    
         
             
              - test/fixtures/google_garbage.json
         
     | 
| 
       56 
58 
     | 
    
         
             
              - test/fixtures/google_madison_square_garden.json
         
     | 
| 
      
 59 
     | 
    
         
            +
              - test/fixtures/google_no_locality.json
         
     | 
| 
       57 
60 
     | 
    
         
             
              - test/fixtures/google_no_results.json
         
     | 
| 
       58 
61 
     | 
    
         
             
              - test/fixtures/yahoo_garbage.json
         
     | 
| 
       59 
62 
     | 
    
         
             
              - test/fixtures/yahoo_madison_square_garden.json
         
     | 
| 
         @@ -61,7 +64,7 @@ files: 
     | 
|
| 
       61 
64 
     | 
    
         
             
              - test/geocoder_test.rb
         
     | 
| 
       62 
65 
     | 
    
         
             
              - test/test_helper.rb
         
     | 
| 
       63 
66 
     | 
    
         
             
            has_rdoc: true
         
     | 
| 
       64 
     | 
    
         
            -
            homepage: http:// 
     | 
| 
      
 67 
     | 
    
         
            +
            homepage: http://www.rubygeocoder.com
         
     | 
| 
       65 
68 
     | 
    
         
             
            licenses: []
         
     | 
| 
       66 
69 
     | 
    
         | 
| 
       67 
70 
     | 
    
         
             
            post_install_message: 
         
     | 
| 
         @@ -70,23 +73,21 @@ rdoc_options: [] 
     | 
|
| 
       70 
73 
     | 
    
         
             
            require_paths: 
         
     | 
| 
       71 
74 
     | 
    
         
             
              - lib
         
     | 
| 
       72 
75 
     | 
    
         
             
            required_ruby_version: !ruby/object:Gem::Requirement 
         
     | 
| 
      
 76 
     | 
    
         
            +
              none: false
         
     | 
| 
       73 
77 
     | 
    
         
             
              requirements: 
         
     | 
| 
       74 
78 
     | 
    
         
             
                - - ">="
         
     | 
| 
       75 
79 
     | 
    
         
             
                  - !ruby/object:Gem::Version 
         
     | 
| 
       76 
     | 
    
         
            -
                    segments: 
         
     | 
| 
       77 
     | 
    
         
            -
                      - 0
         
     | 
| 
       78 
80 
     | 
    
         
             
                    version: "0"
         
     | 
| 
       79 
81 
     | 
    
         
             
            required_rubygems_version: !ruby/object:Gem::Requirement 
         
     | 
| 
      
 82 
     | 
    
         
            +
              none: false
         
     | 
| 
       80 
83 
     | 
    
         
             
              requirements: 
         
     | 
| 
       81 
84 
     | 
    
         
             
                - - ">="
         
     | 
| 
       82 
85 
     | 
    
         
             
                  - !ruby/object:Gem::Version 
         
     | 
| 
       83 
     | 
    
         
            -
                    segments: 
         
     | 
| 
       84 
     | 
    
         
            -
                      - 0
         
     | 
| 
       85 
86 
     | 
    
         
             
                    version: "0"
         
     | 
| 
       86 
87 
     | 
    
         
             
            requirements: []
         
     | 
| 
       87 
88 
     | 
    
         | 
| 
       88 
89 
     | 
    
         
             
            rubyforge_project: 
         
     | 
| 
       89 
     | 
    
         
            -
            rubygems_version: 1. 
     | 
| 
      
 90 
     | 
    
         
            +
            rubygems_version: 1.5.1
         
     | 
| 
       90 
91 
     | 
    
         
             
            signing_key: 
         
     | 
| 
       91 
92 
     | 
    
         
             
            specification_version: 3
         
     | 
| 
       92 
93 
     | 
    
         
             
            summary: Complete geocoding solution for Ruby.
         
     |