From c4256232dcf6af9429191c250a09195dc8d3753a Mon Sep 17 00:00:00 2001 From: Alex Reisner <alex@alexreisner.com> Date: Fri, 4 Feb 2011 12:21:54 -0500 Subject: [PATCH] Add ability to configure timeout duration. --- README.rdoc | 5 ++++- lib/geocoder.rb | 1 + lib/geocoder/configuration.rb | 8 ++++++++ lib/geocoder/lookup.rb | 2 +- 4 files changed, 14 insertions(+), 2 deletions(-) create mode 100644 lib/geocoder/configuration.rb diff --git a/README.rdoc b/README.rdoc index 9e6e0d69..00e41e27 100644 --- a/README.rdoc +++ b/README.rdoc @@ -97,8 +97,11 @@ If your model has +address+, +city+, +state+, and +country+ attributes you might [address, city, state, country].compact.join(', ') end +Please see the code (<tt>lib/geocoder/active_record.rb</tt>) for more methods and detailed information about arguments (eg, working with kilometers). -Please see the code for more methods and detailed information about arguments (eg, working with kilometers). +You can also set the timeout used for connections to Google's geocoding service. The default is 3 seconds, but if you want to set it to 5 you could put the following in an initializer: + + Geocoder::Configuration.timeout = 5 == Reverse Geocoding diff --git a/lib/geocoder.rb b/lib/geocoder.rb index 0f1d77af..2cd221ff 100644 --- a/lib/geocoder.rb +++ b/lib/geocoder.rb @@ -1,3 +1,4 @@ +require "geocoder/configuration" require "geocoder/calculations" require "geocoder/lookup" require "geocoder/result" diff --git a/lib/geocoder/configuration.rb b/lib/geocoder/configuration.rb new file mode 100644 index 00000000..d10e1be8 --- /dev/null +++ b/lib/geocoder/configuration.rb @@ -0,0 +1,8 @@ +module Geocoder + class Configuration + cattr_accessor :timeout + end +end + +Geocoder::Configuration.timeout = 3 + diff --git a/lib/geocoder/lookup.rb b/lib/geocoder/lookup.rb index 40e0654a..443c5cc0 100644 --- a/lib/geocoder/lookup.rb +++ b/lib/geocoder/lookup.rb @@ -61,7 +61,7 @@ module Geocoder url = query_url(query, reverse) begin resp = nil - timeout(3) do + timeout(Geocoder::Configuration.timeout) do Net::HTTP.get_response(URI.parse(url)).body end rescue SocketError, TimeoutError -- GitLab