acts_as_geocodable 2.0.3 → 2.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +25 -0
- data/.rspec +2 -0
- data/.travis.yml +36 -0
- data/CHANGELOG.md +68 -0
- data/Gemfile +12 -0
- data/{MIT-LICENSE → LICENSE.txt} +5 -3
- data/README.md +160 -0
- data/Rakefile +6 -0
- data/acts_as_geocodable.gemspec +27 -0
- data/gemfiles/rails30.gemfile +15 -0
- data/gemfiles/rails31.gemfile +14 -0
- data/gemfiles/rails32.gemfile +14 -0
- data/gemfiles/rails40.gemfile +14 -0
- data/gemfiles/rails41.gemfile +14 -0
- data/lib/acts_as_geocodable.rb +104 -105
- data/lib/acts_as_geocodable/geocode.rb +8 -8
- data/lib/acts_as_geocodable/geocoding.rb +3 -3
- data/lib/acts_as_geocodable/remote_location.rb +8 -8
- data/lib/acts_as_geocodable/version.rb +1 -1
- data/lib/generators/acts_as_geocodable/USAGE +1 -1
- data/lib/generators/acts_as_geocodable/acts_as_geocodable_generator.rb +5 -6
- data/lib/generators/acts_as_geocodable/templates/migration.rb +15 -15
- data/spec/acts_as_geocodable_generator_spec.rb +23 -0
- data/spec/acts_as_geocodable_spec.rb +318 -0
- data/spec/db/database.yml.example +8 -0
- data/spec/db/schema.rb +59 -0
- data/spec/geocode_spec.rb +84 -0
- data/spec/spec_helper.rb +31 -0
- data/spec/support/factories.rb +110 -0
- data/spec/support/geocoder.rb +52 -0
- data/spec/support/models.rb +35 -0
- metadata +122 -67
- data/CHANGELOG +0 -18
- data/README.textile +0 -129
data/CHANGELOG
DELETED
@@ -1,18 +0,0 @@
|
|
1
|
-
2.0.0 - 2010-10-01
|
2
|
-
* Rewritten for Rails 3
|
3
|
-
* New Rails 3/ARel finder syntax
|
4
|
-
* Double Rainbows
|
5
|
-
|
6
|
-
0.2.1 - 2008-8-8
|
7
|
-
* Results are now WillPaginate compatible
|
8
|
-
|
9
|
-
0.2.0 - 2007-10-27
|
10
|
-
* Added validates_as_geocodable (Mark Van Holstyn)
|
11
|
-
* Allow address mapping to be a single field (Mark Van Holstyn)
|
12
|
-
|
13
|
-
0.1.0
|
14
|
-
* Added remote_location to get a users location based on their remote_ip
|
15
|
-
* renamed :city to :locality in address mapping to be consistent with Graticule 0.2
|
16
|
-
create a migration with:
|
17
|
-
rename_column :geocodes, :city, :locality
|
18
|
-
* replace #full_address with #to_location
|
data/README.textile
DELETED
@@ -1,129 +0,0 @@
|
|
1
|
-
h1. acts_as_geocodable
|
2
|
-
|
3
|
-
acts_as_geocodable helps you build geo-aware applications. It automatically geocodes your models when they are saved, giving you the ability to search by location and calculate distances between records.
|
4
|
-
|
5
|
-
*Beginning with version 2, we require Rails 3. Use one of the 1.0.x tags to work with Rails 2.3.*
|
6
|
-
|
7
|
-
We've adopted the ARel style syntax for finding records.
|
8
|
-
|
9
|
-
h2. Usage
|
10
|
-
|
11
|
-
<pre><code>event = Event.create :street => "777 NE Martin Luther King, Jr. Blvd.",
|
12
|
-
:locality => "Portland", :region => "Oregon", :postal_code => 97232
|
13
|
-
|
14
|
-
event.geocode.latitude #=> 45.529100000000
|
15
|
-
event.geocode.longitude #=> -122.644200000000
|
16
|
-
|
17
|
-
event.distance_to "49423" #=> 1807.66560483205
|
18
|
-
|
19
|
-
Event.origin("97232", :within => 50)
|
20
|
-
|
21
|
-
Event.origin("Portland, OR").nearest</code></pre>
|
22
|
-
|
23
|
-
h2. Installation
|
24
|
-
|
25
|
-
Install as a gem
|
26
|
-
|
27
|
-
<pre><code>gem install acts_as_geocodable</code></pre>
|
28
|
-
|
29
|
-
or add it to your Gemfile
|
30
|
-
|
31
|
-
<pre><code>gem 'acts_as_geocodable'</code></pre>
|
32
|
-
|
33
|
-
"Graticule":http://github.com/collectiveidea/graticule is used for all the heavy lifting and will be installed too.
|
34
|
-
|
35
|
-
h2. Upgrading
|
36
|
-
|
37
|
-
Before October 2008, precision wasn't included in the @Geocode@ model. Make sure you add a string precision column to your geocode table if you're upgrading from an older version, and update Graticule.
|
38
|
-
|
39
|
-
Also, if you're upgrading from a previous version of this plugin, note that @:city@ has been renamed to @:locality@ to be consistent with Graticule 0.2. Create a migration that has:
|
40
|
-
|
41
|
-
<pre><code>rename_column :geocodes, :city, :locality</code></pre>
|
42
|
-
|
43
|
-
Also remember to change your mapping in your geocodable classes to use the @:locality@ key instead of @:city@:
|
44
|
-
|
45
|
-
<pre><code>class Event < ActiveRecord::Base
|
46
|
-
acts_as_geocodable :address => {:street => :address1, :locality => :city,
|
47
|
-
:region => :state, :postal_code => :zip}
|
48
|
-
end</code></pre>
|
49
|
-
|
50
|
-
h2. Configuration
|
51
|
-
|
52
|
-
Create the required tables
|
53
|
-
|
54
|
-
<pre><code>rails generate acts_as_geocodable
|
55
|
-
rake db:migrate</code></pre>
|
56
|
-
|
57
|
-
Set the default geocoder in your environment.rb file.
|
58
|
-
|
59
|
-
<pre><code>Geocode.geocoder = Graticule.service(:yahoo).new 'your_api_key'</code></pre>
|
60
|
-
|
61
|
-
Then, in each model you want to make geocodable, add @acts_as_geocodable@.
|
62
|
-
|
63
|
-
<pre><code>class Event < ActiveRecord::Base
|
64
|
-
acts_as_geocodable
|
65
|
-
end</code></pre>
|
66
|
-
|
67
|
-
The only requirement is that your model must have address fields. By default, acts_as_geocodable looks for attributes called +street+, +locality+, +region+, +postal_code+, and +country+. To change these, you can provide a mapping in the @:address@ option:
|
68
|
-
|
69
|
-
<pre><code>class Event < ActiveRecord::Base
|
70
|
-
acts_as_geocodable :address => {:street => :address1, :locality => :city, :region => :state, :postal_code => :zip}
|
71
|
-
end</code></pre>
|
72
|
-
|
73
|
-
If that doesn't meet your needs, simply override the default @to_location@ method in your model, and return a @Graticule::Location@ with those attributes set.
|
74
|
-
|
75
|
-
acts_as_geocodable can also update your address fields with the data returned from the geocoding service:
|
76
|
-
|
77
|
-
<pre><code>class Event < ActiveRecord::Base
|
78
|
-
acts_as_geocodable :normalize_address => true
|
79
|
-
end</code></pre>
|
80
|
-
|
81
|
-
h2. IP-based Geocoding
|
82
|
-
|
83
|
-
acts_as_geocodable adds a @remote_location@ method in your controllers that uses http://hostip.info to guess remote users location based on their IP address.
|
84
|
-
|
85
|
-
<pre><code>def index
|
86
|
-
@nearest = Store.origin(remote_location).nearest if remote_location
|
87
|
-
@stores = Store.all
|
88
|
-
end</code></pre>
|
89
|
-
|
90
|
-
Keep in mind that IP-based geocoding is not always accurate, and often will not return any results.
|
91
|
-
|
92
|
-
h2. Contributing
|
93
|
-
|
94
|
-
In the spirit of "free software":http://www.fsf.org/licensing/essays/free-sw.html, **everyone** is encouraged to help improve this project.
|
95
|
-
|
96
|
-
Here are some ways *you* can contribute:
|
97
|
-
|
98
|
-
* using alpha, beta, and prerelease versions
|
99
|
-
* reporting bugs
|
100
|
-
* suggesting new features
|
101
|
-
* writing or editing documentation
|
102
|
-
* writing specifications
|
103
|
-
* writing code (**no patch is too small**: fix typos, add comments, clean up inconsistent whitespace)
|
104
|
-
* refactoring code
|
105
|
-
* closing "issues":https://github.com/collectiveidea/acts_as_geocodable/issues/
|
106
|
-
* reviewing patches
|
107
|
-
|
108
|
-
h2. Submitting an Issue
|
109
|
-
|
110
|
-
We use the "GitHub issue tracker":https://github.com/collectiveidea/acts_as_geocodable/issues/ to track bugs
|
111
|
-
and features. Before submitting a bug report or feature request, check to make sure it hasn't already
|
112
|
-
been submitted. You can indicate support for an existing issuse by voting it up. When submitting a
|
113
|
-
bug report, please include a "Gist":https://gist.github.com/ that includes a stack trace and any
|
114
|
-
details that may be necessary to reproduce the bug, including your gem version, Ruby version, and
|
115
|
-
operating system. Ideally, a bug report should include a pull request with failing specs.
|
116
|
-
|
117
|
-
h2. Submitting a Pull Request
|
118
|
-
|
119
|
-
1. Fork the project.
|
120
|
-
2. Create a topic branch.
|
121
|
-
3. Implement your feature or bug fix.
|
122
|
-
4. Add specs for your feature or bug fix.
|
123
|
-
5. Run @bundle exec rake@. If your changes are not 100% covered and passing, go back to step 4.
|
124
|
-
6. Commit and push your changes.
|
125
|
-
7. Submit a pull request. Please do not include changes to the gemspec, version, or history file. (If you want to create your own version for some reason, please do so in a separate commit.)
|
126
|
-
|
127
|
-
h3. To Do
|
128
|
-
|
129
|
-
* configurable formulas
|