我正在研究RoR并使用 Ruby Geocoder 进行IP识别。我在下面使用的代码片段。
的Gemfile
gem "geocoder"
然后获取国家/地区我正在使用
country = request.location.country
以前工作得很好,但是现在它抛出了一个错误,比如未定义的方法国家/地区。
我无法弄清楚这个问题。任何人都可以帮助我找出解决方案或建议API上的任何其他宝石,以便根据IP地址查找国家/地区
感谢
此致
答案 0 :(得分:1)
Geocoder服务似乎存在问题。甚至我在AWS上运行的应用程序在过去的36小时内也出现了同样的问题。它现在运作良好。我没有做任何事情,这让我意味着Geocoder出现了一些问题,他们现在已经解决了这个问题。
我想知道这是否曾经发生过,因为它确实让我担心。
答案 1 :(得分:0)
如果您使用的是本地开发环境,则request.location
很可能会返回nil
。根据{{3}}:
请注意,[request.location]通常会在测试和开发环境中返回nil,因为“localhost”和“0.0.0.0”之类的东西不是Internet IP地址。
因此,nil
例外所涉及的特定问题 - 在很大程度上 - 应限于开发环境。在本地开发时,可以使用Ruby异常处理或Rails the docs来处理nil
异常:
request.location.try(:country)
<强>更新强>:
正如@nonocut在他的回答中解释的那样,问题中引用的这个问题可能是由于谷歌地图的某些问题。然而,能够通过异常处理来处理这些中断非常重要 - 它有利于本地开发,并且可以实现实用的部署。