Skip to content

Commit

Permalink
Configuration can be done in environment files or initializer
Browse files Browse the repository at this point in the history
  • Loading branch information
jlecour committed Sep 12, 2010
1 parent 23780bd commit 2f8a3a2
Show file tree
Hide file tree
Showing 3 changed files with 87 additions and 2 deletions.
67 changes: 67 additions & 0 deletions CONFIG.markdown
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
# You can configure Geokit in you environment files

These defaults are used in `Geokit::Mappable.distance_to` and in `acts_as_mappable`

config.geokit.default_units = :miles
config.geokit.default_formula = :sphere

This is the timeout value in seconds to be used for calls to the geocoder web services. For no timeout at all, comment out the setting. The timeout unit is in seconds.

config.geokit.geocoders.request_timeout = 3

These settings are used if web service calls must be routed through a proxy.
These setting can be `nil` if not needed, otherwise, addr and port must be filled in at a minimum. If the proxy requires authentication, the username and password can be provided as well.

config.geokit.geocoders.proxy_addr = nil
config.geokit.geocoders.proxy_port = nil
config.geokit.geocoders.proxy_user = nil
config.geokit.geocoders.proxy_pass = nil

This is your yahoo application key for the Yahoo Geocoder.

See [http://developer.yahoo.com/faq/index.html#appid](http://developer.yahoo.com/faq/index.html#appid)
and [http://developer.yahoo.com/maps/rest/V1/geocode.html](http://developer.yahoo.com/maps/rest/V1/geocode.html)

config.geokit.geocoders.yahoo = 'REPLACE_WITH_YOUR_YAHOO_KEY'

This is your Google Maps geocoder key.

See [http://www.google.com/apis/maps/signup.html](http://www.google.com/apis/maps/signup.html)
and [http://www.google.com/apis/maps/documentation/#Geocoding_Examples](http://www.google.com/apis/maps/documentation/#Geocoding_Examples)

config.geokit.geocoders.google = 'REPLACE_WITH_YOUR_GOOGLE_KEY'

This is your username and password for **geocoder.us**.
To use the free service, the value can be set to `nil` or `false`.
For usage tied to an account, the value should be set to `username:password`.

See [http://geocoder.us](http://geocoder.us)
and [http://geocoder.us/user/signup](http://geocoder.us/user/signup)

config.geokit.geocoders.geocoder_us = false

This is your authorization key for **geocoder.ca**.
To use the free service, the value can be set to `nil` or `false`. For usage tied to an account, set the value to the key obtained from
**Geocoder.ca**.

See [http://geocoder.ca](http://geocoder.ca)
and [http://geocoder.ca/?register=1](http://geocoder.ca/?register=1)

config.geokit.geocoders.geocoder_ca = false

Uncomment to use a username with the Geonames geocoder

config.geokitgeocoders.geonames="REPLACE_WITH_YOUR_GEONAMES_USERNAME"

This is the order in which the geocoders are called in a failover scenario.
If you only want to use a single geocoder, put a single symbol in the array.
Valid symbols are `:google`, `:yahoo`, `:us`, and `:ca`.
Be aware that there are **Terms of Use** restrictions on how you can use the various geocoders. Make sure you read up on relevant **Terms of Use** for each geocoder you are going to use.

config.geokit.geocoders.provider_order = [:google,:us]

The IP provider order. Valid symbols are `:ip`, `:geo_plugin`.
As before, make sure you read up on relevant **Terms of Use** for each

config.geokitgeocoders.ip_provider_order = [:geo_plugin,:ip]

4 changes: 2 additions & 2 deletions README.markdown
Original file line number Diff line number Diff line change
Expand Up @@ -547,9 +547,9 @@ Follow the Google Group for updates and discussion on Geokit: http://groups.goog

## IMPORTANT POST-INSTALLATION NOTES:

*1. The configuration file*: Geokit for Rails uses a configuration file in config/initializers.
*1. The configuration*: Geokit for Rails uses a Railtie with a configuration routine.
You *must* add your own keys for the various geocoding services if you want to use geocoding.
If you need to refer to the original template again, see the `assets/api_keys_template` file.
Look at the CONGIG file for possible configuration key/values.

*2. The gem dependency*: Geokit for Rails depends on the Geokit gem. Tell Rails about this
dependency in `config/environment.rb`, within the initializer block:
Expand Down
18 changes: 18 additions & 0 deletions lib/geokit_rails/railtie.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,17 +4,35 @@
module Geokit

class Railtie < Rails::Railtie

config.geokit = ActiveSupport::OrderedOptions.new
config.geokit.geocoders = ActiveSupport::OrderedOptions.new

initializer 'geokit_rails.insert_into_active_record' do
ActiveSupport.on_load :active_record do
ActiveRecord::Base.send(:include, Geokit::ActsAsMappable::Glue)
end
end

initializer 'geokit_rails.insert_into_action_controller' do
ActiveSupport.on_load :action_controller do
ActionController::Base.send(:include, Geokit::GeocoderControl)
ActionController::Base.send(:include, GeoKit::IpGeocodeLookup)
end
end

config.after_initialize do |app|
options = app.config.geokit
geocoders_options = options.delete(:geocoders)

options.each do |k,v|
g [k,v]
Geokit::send("#{k}=", v)
end
geocoders_options.each do |k,v|
Geokit::Geocoders::send("#{k}=", v)
end
end
end

end

0 comments on commit 2f8a3a2

Please sign in to comment.