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
库执行此操作。它支持 ipv4
和 ipv6
:
$ 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')
多年来,我一直在 Geocoder 的帮助下确定用户位置,查找 IPv4 地址。通过发射
request.location,我确定了位置,如果这个国家是多语言的,我查看浏览器语言设置来设置合适的语言。当我向我的 Rails 应用程序提供 IPv6 地址时,IP 地址 returns :::1,这不是很有帮助。
不幸的是,IPv6 在确定访问者位置时带来了挑战。在 Ruby-on-Rails 上是否有任何经过验证的使用 IPv6 的方法?
我在互联网上用谷歌搜索,但没有找到具体的解决方案。
您可以使用 ipaddr
库执行此操作。它支持 ipv4
和 ipv6
:
$ 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')