Class: Geocoder::Configuration

Inherits:
Object
  • Object
show all
Includes:
Singleton
Defined in:
lib/geocoder/configuration.rb

Constant Summary collapse

OPTIONS =
[
  :timeout,
  :lookup,
  :ip_lookup,
  :language,
  :host,
  :http_headers,
  :use_https,
  :http_proxy,
  :https_proxy,
  :api_key,
  :cache,
  :always_raise,
  :units,
  :distances,
  :basic_auth,
  :logger,
  :kernel_logger_level,
  :cache_options
]

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeConfiguration

:nodoc



97
98
99
100
# File 'lib/geocoder/configuration.rb', line 97

def initialize # :nodoc
  @data = Geocoder::ConfigurationHash.new
  set_defaults
end

Instance Attribute Details

#dataObject

Returns the value of attribute data.



74
75
76
# File 'lib/geocoder/configuration.rb', line 74

def data
  @data
end

Class Method Details

.initializeObject



80
81
82
# File 'lib/geocoder/configuration.rb', line 80

def self.initialize
  instance.send(:initialize)
end

.set_defaultsObject



76
77
78
# File 'lib/geocoder/configuration.rb', line 76

def self.set_defaults
  instance.set_defaults
end

Instance Method Details

#configure(options) ⇒ Object



93
94
95
# File 'lib/geocoder/configuration.rb', line 93

def configure(options)
  Util.recursive_hash_merge(@data, options)
end

#set_defaultsObject



102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
# File 'lib/geocoder/configuration.rb', line 102

def set_defaults

  # geocoding options
  @data[:timeout]      = 3           # geocoding service timeout (secs)
  @data[:lookup]       = :nominatim  # name of street address geocoding service (symbol)
  @data[:ip_lookup]    = :ipinfo_io  # name of IP address geocoding service (symbol)
  @data[:language]     = :en         # ISO-639 language code
  @data[:http_headers] = {}          # HTTP headers for lookup
  @data[:use_https]    = false       # use HTTPS for lookup requests? (if supported)
  @data[:http_proxy]   = nil         # HTTP proxy server (user:pass@host:port)
  @data[:https_proxy]  = nil         # HTTPS proxy server (user:pass@host:port)
  @data[:api_key]      = nil         # API key for geocoding service
  @data[:basic_auth]   = {}          # user and password for basic auth ({:user => "user", :password => "password"})
  @data[:logger]       = :kernel     # :kernel or Logger instance
  @data[:kernel_logger_level] = ::Logger::WARN # log level, if kernel logger is used

  # exceptions that should not be rescued by default
  # (if you want to implement custom error handling);
  # supports SocketError and Timeout::Error
  @data[:always_raise] = []

  # calculation options
  @data[:units]     = :mi      # :mi or :km
  @data[:distances] = :linear  # :linear or :spherical

  # Set the default values for the caching mechanism
  # By default, the cache keys will not expire as IP addresses and phyiscal
  # addresses will rarely change.
  @data[:cache]        = nil   # cache object (must respond to #[], #[]=, and optionally #keys)
  @data[:cache_prefix] = nil   # - DEPRECATED - prefix (string) to use for all cache keys
  @data[:cache_options] = {
    prefix: 'geocoder:',
    expiration: nil
  }
end