Rails Gem Geocoder Lookup方法不服从/config/initializers/geocoder.rb

时间:2013-05-16 03:57:02

标签: ruby-on-rails lookup rails-geocoder

我不确切知道为什么但是gem正常工作,除非它看起来不符合配置文件。

当我使用'puts'命令测试其初始化时,它会在控制台中显示该文件正在被重新加载。

中心问题是我想让我的地理编码器gem使用方法查找来确定maxmind或google的ip位置服务的用户位置,因为freegeoip只是给我错误的结果。

这是我自己创建的/config/initializers/geocoder.rb文件:

# config/initializers/geocoder.rb

def self.options_and_defaults
  [
      # geocoding service timeout (secs)
      [:timeout, 3],

      # name of geocoding service (symbol)
      [:lookup, :google],

      # ISO-639 language code
      [:language, :en],

      # use HTTPS for lookup requests? (if supported)
      [:use_https, false],

      # HTTP proxy server (user:pass@host:port)
      [:http_proxy, nil],

      # HTTPS proxy server (user:pass@host:port)
      [:https_proxy, nil],

      # API key for geocoding service
      [:api_key, nil],

      # cache object (must respond to #[], #[]=, and #keys)
      [:cache, nil],

      # prefix (string) to use for all cache keys
      [:cache_prefix, "geocoder:"],

      # exceptions that should not be rescued by default
      # (if you want to implement custom error handling);
      # supports SocketError and TimeoutError
      [:always_raise, []]
  ]
end

我还将此代码用于我的google api代码并使用google进行查找,并使用maxmind ...两者都返回我,实际上地理编码器仍然使用freegeoip

我在控制器上实现了'puts'条目:

puts 'oioioi'
puts request.ip
puts Geocoder.search(request.ip).first
puts request.location  

所以我可以在控制台输出上检测到它。

我得到了:

oioioi
127.0.0.1
#<Geocoder::Result::Freegeoip:0x007fbe846eb258>
#<Geocoder::Result::Freegeoip:0x007fbe847232e8> 

我知道即时通讯使用本地IP,但我已经在deplyoment上进行了测试,事实是查找仍然使用Freegeoip作为查找服务器。

希望有人能帮助我......提前致谢。

1 个答案:

答案 0 :(得分:3)

我没有使用正确的配置。我需要设置:ip_lookup才能使它正常工作。