Permalink
Browse files

this checks to see if the GeoKit class has been defined, by doing thi…

…s config.gem and all the rake

tasks can work to support gem dependencies correctly.
it is probably ideal to check rails versions and only for > 2.1 allow this
  • Loading branch information...
1 parent 9375188 commit 9aa43beba4fac45814a2024e9cdfe2a6446002d8 @gustin gustin committed Jan 12, 2009
Showing with 71 additions and 67 deletions.
  1. +46 −44 assets/api_keys_template
  2. +11 −9 init.rb
  3. +14 −14 install.rb
View
@@ -1,52 +1,54 @@
-require 'geokit' #requires the Geokit gem
+if defined? Geokit
+ require 'geokit' #requires the Geokit gem
-# These defaults are used in Geokit::Mappable.distance_to and in acts_as_mappable
-Geokit::default_units = :miles
-Geokit::default_formula = :sphere
+ # These defaults are used in Geokit::Mappable.distance_to and in acts_as_mappable
+ Geokit::default_units = :miles
+ 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.
-Geokit::Geocoders::timeout = 3
+ # 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.
+ Geokit::Geocoders::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.
-Geokit::Geocoders::proxy_addr = nil
-Geokit::Geocoders::proxy_port = nil
-Geokit::Geocoders::proxy_user = nil
-Geokit::Geocoders::proxy_pass = nil
+ # 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.
+ Geokit::Geocoders::proxy_addr = nil
+ Geokit::Geocoders::proxy_port = nil
+ Geokit::Geocoders::proxy_user = nil
+ Geokit::Geocoders::proxy_pass = nil
-# This is your yahoo application key for the Yahoo Geocoder.
-# See http://developer.yahoo.com/faq/index.html#appid
-# and http://developer.yahoo.com/maps/rest/V1/geocode.html
-Geokit::Geocoders::yahoo = 'REPLACE_WITH_YOUR_YAHOO_KEY'
+ # This is your yahoo application key for the Yahoo Geocoder.
+ # See http://developer.yahoo.com/faq/index.html#appid
+ # and http://developer.yahoo.com/maps/rest/V1/geocode.html
+ Geokit::Geocoders::yahoo = 'REPLACE_WITH_YOUR_YAHOO_KEY'
-# This is your Google Maps geocoder key.
-# See http://www.google.com/apis/maps/signup.html
-# and http://www.google.com/apis/maps/documentation/#Geocoding_Examples
-Geokit::Geocoders::google = 'REPLACE_WITH_YOUR_GOOGLE_KEY'
+ # This is your Google Maps geocoder key.
+ # See http://www.google.com/apis/maps/signup.html
+ # and http://www.google.com/apis/maps/documentation/#Geocoding_Examples
+ 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
-# and http://geocoder.us/user/signup
-Geokit::Geocoders::geocoder_us = false
+ # 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
+ # and http://geocoder.us/user/signup
+ 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
-# and http://geocoder.ca/?register=1
-Geokit::Geocoders::geocoder_ca = 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
+ # and http://geocoder.ca/?register=1
+ Geokit::Geocoders::geocoder_ca = false
-# 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.
-Geokit::Geocoders::provider_order = [:google,:us]
+ # 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.
+ Geokit::Geocoders::provider_order = [:google,:us]
+end
View
20 init.rb
@@ -1,13 +1,15 @@
# Load modules and classes needed to automatically mix in ActiveRecord and
# ActionController helpers. All other functionality must be explicitly
# required.
-require 'geokit' #requires the geokit gem
-require 'geokit-rails/defaults'
-require 'geokit-rails/acts_as_mappable'
-require 'geokit-rails/ip_geocode_lookup'
+if defined? Geokit
+ require 'geokit' #requires the geokit gem
+ require 'geokit-rails/defaults'
+ require 'geokit-rails/acts_as_mappable'
+ require 'geokit-rails/ip_geocode_lookup'
+
+ # Automatically mix in distance finder support into ActiveRecord classes.
+ ActiveRecord::Base.send :include, GeoKit::ActsAsMappable
-# Automatically mix in distance finder support into ActiveRecord classes.
-ActiveRecord::Base.send :include, GeoKit::ActsAsMappable
-
-# Automatically mix in ip geocoding helpers into ActionController classes.
-ActionController::Base.send :include, GeoKit::IpGeocodeLookup
+ # Automatically mix in ip geocoding helpers into ActionController classes.
+ ActionController::Base.send :include, GeoKit::IpGeocodeLookup
+end
View
@@ -1,14 +1,14 @@
-# Display to the console the contents of the README file.
-puts IO.read(File.join(File.dirname(__FILE__), 'README.markdown'))
-
-# place the api_keys_template in the application's /config/initializers/geokit_config.rb
-path=File.expand_path(File.join(File.dirname(__FILE__), '../../../config/initializers/geokit_config.rb'))
-template_path=File.join(File.dirname(__FILE__), '/assets/api_keys_template')
-if File.exists?(path)
- puts "It looks like you already have a configuration file at #{path}. We've left it as-is. Recommended: check #{template_path} to see if anything has changed, and update config file accordingly."
-else
- File.open(path, "w") do |f|
- f.puts IO.read(template_path)
- puts "We created a configuration file for you in config/initializers/geokit_config.rb. Add your Google API keys, etc there."
- end
-end
+# Display to the console the contents of the README file.
+puts IO.read(File.join(File.dirname(__FILE__), 'README.markdown'))
+
+# place the api_keys_template in the application's /config/initializers/geokit_config.rb
+path=File.expand_path(File.join(File.dirname(__FILE__), '../../../config/initializers/geokit_config.rb'))
+template_path=File.join(File.dirname(__FILE__), '/assets/api_keys_template')
+if File.exists?(path)
+ puts "It looks like you already have a configuration file at #{path}. We've left it as-is. Recommended: check #{template_path} to see if anything has changed, and update config file accordingly."
+else
+ File.open(path, "w") do |f|
+ f.puts IO.read(template_path)
+ puts "We created a configuration file for you in config/initializers/geokit_config.rb. Add your Google API keys, etc there."
+ end
+end

1 comment on commit 9aa43be

meuble commented on 9aa43be Feb 3, 2009

If I understand well, in init.rb you load the Geokit gem and do all inclusion stuff after :

if defined? Geokit

And you do nothing if Geokit isn’t defined.
But if Geokit is defined, doesn’t that mean that the gem is already loaded ?
The test has to be :

unless defined? Geokit

Am I wrong ?

Thanks for that plugin (and gem).

Please sign in to comment.