Ruby -on-Rails, геокодирование и IPv6 - PullRequest
1 голос
/ 02 мая 2020

В течение многих лет я определял местоположение пользователя с помощью Geocoder , ища адрес IPv4. Запустив

request.location, я определил местоположение, и если страна была многоязычной, я посмотрел настройки языка браузера, чтобы установить соответствующий язык. Когда я передаю IPv6-адрес своему приложению Rails, IP-адрес возвращает ::: 1, что не очень полезно.

К сожалению, IPv6 представляет собой проблему при определении местоположения посетителей. Есть ли проверенный способ работы с IPv6 на Ruby -on-Rails?

Я гуглил свой путь через inte rnet, но не нашел конкретного c решения.

1 Ответ

1 голос
/ 02 мая 2020

Вы можете сделать это через библиотеку ipaddr. Оба ipv4 и ipv6 поддерживаются. Пример:

require 'ipaddr'

ipaddr1 = IPAddr.new "3ffe:505:2::1"

p ipaddr1                   
#=> #<IPAddr: IPv6:3ffe:0505:0002:0000:0000:0000:0000:0001/ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff>

p ipaddr1.to_s              
#=> "3ffe:505:2::1"

Если вам нужны более продвинутые функции, попробуйте ipaddress, который также поддерживает ipv6.

Вы можете использовать Geocoder.search() для поиска по ipv6:

Geocoder.search(ipaddr1)

Geocoder.search('2607:fea8:1360:f7d:dce7:b7f0:e0b6:1014')

...