Ruby Geocoder (http://rubygeocoder.com/) отлично подходит для получения широты и долготы известного адреса. Теперь я пытаюсь использовать его для поиска кода страны по IP-адресу, чтобы новому пользователю не приходилось выбирать свою страну.
if @person.country.blank?
ip_loc = Geocoder.search(my_ip_address)
if ip_loc.present?
@person.country = ip_loc[0].data['country_code']
end
end
Чтобы получить их IP-адрес для передачи геокодеру, я использую сокет:
def my_ip_address
require 'socket'
list=Socket.ip_address_list
ip = list.detect{|intf| intf.ipv4_private?}
ip.ip_address if ip
end
Поскольку поиск по IP не будет работать для машины разработки (IP-адрес всегда является частным, внутренним номером), я пытаюсь проверить это на Heroku.
Однако, когда это работает на Heroku, я все еще получаю частный IP-адрес 172.19.75.142, который невозможно найти с помощью Geocoder.
Может ли кто-нибудь направить меня в продуктивном направлении для получения страны по IP, которая будет работать на Heroku?