request.location ruby​​地理编码器中的错误

rde*_*an1 3 ruby ruby-on-rails rails-geocoder

在我的sesions表中我使用请求方法存储国家和城市名称,现在,在ubuntu服务器中它运行良好但在redhat中我收到此错误

NoMethodError (undefined method `city' for nil:NilClass)
Run Code Online (Sandbox Code Playgroud)

我尝试过这个问题的解决方案,我重新启动了我的服务器,但它对我不起作用.

在两台服务器中,我使用的是Passenger + Apache

rde*_*an1 9

我发现了问题,那就是搜索IP占用了太多时间,所以我创建了一个初始化程序并更改了默认超时

配置/初始化/ geocoder.rb

Geocoder.configure(
 :timeout => 20
)
Run Code Online (Sandbox Code Playgroud)

我怎么找到的

我打开导轨c并搜索我的IP

$ location = Geocoder.search("myIpAddres")
Geocoding API not responding fast enough (use Geocoder.configure(:timeout => ...) to set limit).
=> []
Run Code Online (Sandbox Code Playgroud)

现在它有效

$ location = Geocoder.search("myIpAddres")
=> [#<Geocoder::Result::Freegeoip:0xa7130b8 @data={"ip"=>"myIpAddres", "country_code"=>"CO", "country_name"=>"Colombia", "region_code"=>"02", "region_name"=>"Antioquia", "city"=>"Medellín", "zipcode"=>"", "latitude"=>6.2518, "longitude"=>-75.5636, "metro_code"=>"", "areacode"=>""}, @cache_hit=nil>]
Run Code Online (Sandbox Code Playgroud)