diff --git a/lib/geocoder/configuration.rb b/lib/geocoder/configuration.rb index e40e2521e97eb1e58e8c00c961eb865396636a9f..30d5f82b4baf44947854d3f90f1802e80ab450e1 100644 --- a/lib/geocoder/configuration.rb +++ b/lib/geocoder/configuration.rb @@ -13,6 +13,20 @@ module Geocoder end end + ## + # Direct read access to the singleton's config data. + # + def self.config + Configuration.instance.data + end + + ## + # Direct write access to the singleton's config data. + # + def self.config=(value) + Configuration.instance.data = value + end + ## # This class handles geocoder Geocoder configuration # (geocoding service provider, caching, units of measurement, etc). @@ -54,7 +68,7 @@ module Geocoder :distances ] - attr_reader :data + attr_accessor :data OPTIONS.each do |o| define_method o do @@ -72,6 +86,7 @@ module Geocoder def set_defaults @data = { + # geocoding options :timeout => 3, # geocoding service timeout (secs) :lookup => :google, # name of street address geocoding service (symbol) :ip_lookup => :freegeoip, # name of IP address geocoding service (symbol) diff --git a/lib/geocoder/lookups/base.rb b/lib/geocoder/lookups/base.rb index db42313b35ba3a9ae22420746f6d7bb82673af1a..087bac465e1acd3cb5c2c8f0e44a757e28d054c4 100644 --- a/lib/geocoder/lookups/base.rb +++ b/lib/geocoder/lookups/base.rb @@ -151,7 +151,7 @@ module Geocoder raise_error(err) or warn "Geocoding API connection cannot be established." rescue TimeoutError => err raise_error(err) or warn "Geocoding API not responding fast enough " + - "(see Geocoder::Configuration.timeout to set limit)." + "(use Geocoder.config[:timeout] to set limit)." end ## diff --git a/test/configuration_test.rb b/test/configuration_test.rb index 14859bf788c53cf5db02d1b3bb22aff5ff47310d..6b85d39a3be8d3a5fe6e1cd1f0ef5dd28d64928c 100644 --- a/test/configuration_test.rb +++ b/test/configuration_test.rb @@ -16,11 +16,13 @@ class ConfigurationTest < Test::Unit::TestCase def test_setting_with_class_method Geocoder::Configuration.units = :test assert_equal :test, Geocoder.configure.units + assert_equal :test, Geocoder.config[:units] end def test_setting_with_configure_method Geocoder.configure.units = :test assert_equal :test, Geocoder::Configuration.units + assert_equal :test, Geocoder.config[:units] end def test_setting_with_block_syntax @@ -29,6 +31,7 @@ class ConfigurationTest < Test::Unit::TestCase end assert_equal :test, Geocoder::Configuration.units assert_equal :test, Geocoder.configure.units + assert_equal :test, Geocoder.config[:units] end def test_model_configuration