Rails GeoLiteCity GeoIP 在本地开发环境中不起作用

Posted

技术标签:

【中文标题】Rails GeoLiteCity GeoIP 在本地开发环境中不起作用【英文标题】:Rails GeoLiteCity GeoIP Doesn't Work In Local Development Environment 【发布时间】:2014-09-12 13:48:18 【问题描述】:

我有来自 MaxMind 的 GeoIP.dat(国家)和 GeoLiteCity.dat(城市)数据。国家数据在我当地的 Rails 开发中运行良好,但是当我尝试查找城市数据时,它返回 null。

但是,当我部署到 Heroku 时,城市数据确实返回了正确的值。知道为什么国家/地区数据在本地发展中起作用而城市数据不起作用吗?

在 Heroku 中工作,而不是在本地:

geoip = GeoIP.new('geoip/GeoLiteCity.dat').city(request.remote_ip)

两者都适用:

geoip = GeoIP.new('geoip/GeoIP.dat').country(request.remote_ip)

【问题讨论】:

【参考方案1】:

我的猜测是,Maxmind 出于某种原因将私有 IP 网络输入国家数据库,但 [正确地] 没有输入城市数据库。

您应该编写代码,以便在没有得到结果时将其设置为某个值(如果您在其他地方依赖它)。它会发生(尤其是在开发中)。在我的项目中,我将其设置为公司总部所在的城市。

【讨论】:

是的,我在 if 语句中添加了检查它是否存在,如果存在则获取 geoip 数据,否则跳过它。但是我仍然有一堆“不必要的”提交,因为我必须在 heroku 中测试 :) @TomHammond 你根本不能在本地测试?

以上是关于Rails GeoLiteCity GeoIP 在本地开发环境中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

PHP 从 IP 地址获取位置 MaxMind GEOIP

MaxMind 免费 GeoLiteCity.dat 文件大小问题

GeoIP最快捷安装

15. Nginx Geo

使用 .htaccess 和 GeoipLite Legacy + mod_geoip

Heroku + Rails + GeoIp = 未初始化的常量 GeoIP 错误