From 641b5ffe6d062e88570afc275d6c6f2d9844a489 Mon Sep 17 00:00:00 2001 From: Alex Reisner <alex@alexreisner.com> Date: Fri, 7 Dec 2012 16:58:25 -0500 Subject: [PATCH] Add Geocoder.config for direct access to hash. --- lib/geocoder/configuration.rb | 17 ++++++++++++++++- lib/geocoder/lookups/base.rb | 2 +- test/configuration_test.rb | 3 +++ 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/lib/geocoder/configuration.rb b/lib/geocoder/configuration.rb index e40e2521..30d5f82b 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 db42313b..087bac46 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 14859bf7..6b85d39a 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 -- GitLab