Ruby-on-Rails、地理编码和 IPv6

Ruby-on-Rails, Geocoding and IPv6

多年来,我一直在 Geocoder 的帮助下确定用户位置,查找 IPv4 地址。通过发射

request.location,我确定了位置,如果这个国家是多语言的,我查看浏览器语言设置来设置合适的语言。当我向我的 Rails 应用程序提供 IPv6 地址时,IP 地址 returns :::1,这不是很有帮助。

不幸的是,IPv6 在确定访问者位置时带来了挑战。在 Ruby-on-Rails 上是否有任何经过验证的使用 IPv6 的方法?

我在互联网上用谷歌搜索,但没有找到具体的解决方案。

您可以使用 ipaddr 库执行此操作。它支持 ipv4ipv6:

$ require 'ipaddr'
$ ipaddr = IPAddr.new "3ffe:505:2::1"
$ p ipaddr                   
#=> #<IPAddr: IPv6:3ffe:0505:0002:0000:0000:0000:0000:0001/ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff>
$ p ipaddr.to_s              
#=> "3ffe:505:2::1"

如果您想要更高级的功能,请尝试 ipaddress gem,它也支持 ipv6

您可以使用 Geocoder.search()ipv6 地址搜索:

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