Rails Heroku SocketError: getaddrinfo: имя или служба неизвестны

Я использую приложение heroku, Ruby 2.2.0, Rails 4.0.12 и использую гем geokit-rails.

Когда я делаю 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

Я не уверен, что я должен делать тогда. На моей машине разработки работает нормально. Любая подсказка, в чем проблема?


person Stefanos.Ioannou    schedule 17.04.2016    source источник
comment
убедитесь, что это не проблема с интернетом; обычно мы видим эту ошибку, когда интернет отключен   -  person illusionist    schedule 17.04.2016
comment
Следил за этим через UpWork. Я думаю, что что-то блокирует подключение приложения к Интернету. Вы на линуксе?   -  person Ziyan Junaideen    schedule 19.04.2016
comment
@ZiyanJunaideen Проблема только в производстве в Heroku. В прошлом я делал такую ​​же реализацию в Digital Ocean, и все работало нормально. Да, и DO, и Heroku были на linux-ubuntu.   -  person Stefanos.Ioannou    schedule 19.04.2016


Ответы (1)


Heroku использует переадресацию, из-за чего request.remote_ip возвращает внутренний IP-адрес heroku, который по какой-то причине не может быть обработан IpGeocoder.

Попробуйте использовать request.env['HTTP_X_FORWARDED_FOR'] вместо этого.

person sl4vr    schedule 19.04.2016