Rails Heroku SocketError: getaddrinfo: Name or service not known

Rails Heroku SocketError: getaddrinfo: Name or service not known

我正在使用 heroku 应用程序,Ruby 2.2.0,Rails 4.0.12 并使用 geokit-rails gem.

当我执行 IpGeocoder.geocode(request.remote_ip) 时出现错误:

Caught an error during Ip geocoding call: getaddrinfo: Name or service not known

我在网上搜索了一下,发现解决方案是做一个初始化程序并需要一个库:

require 'resolv-replace'

当我这样做时,出现错误:

Caught an error during Ip geocoding call: Hostname not known: api.hostip.info

我不知道我该怎么做。在我的开发机器上工作正常。知道问题出在哪里吗?

Heroku 使用转发,导致 request.remote_ip return 内部 heroku ip 地址,由于某种原因无法被 IpGeocoder 处理。

尝试使用 request.env['HTTP_X_FORWARDED_FOR'] insted。