多年来,我一直在Geocoder的帮助下确定用户位置,查找 IPv4 地址。通过射击
request.location,我确定了位置,如果国家是多语言的,我查找浏览器语言设置来设置合适的语言。当我向 Rails 应用程序提供 IPv6 地址时,IP 地址返回 :::1,这不是很有帮助。
不幸的是,IPv6 在确定访问者位置时提出了挑战。是否有任何经过验证的方法可以在 Ruby-on-Rails 上使用 IPv6?
我已经通过互联网搜索了我的方式,但没有遇到特定的解决方案。
多年来,我一直在Geocoder的帮助下确定用户位置,查找 IPv4 地址。通过射击
request.location,我确定了位置,如果国家是多语言的,我查找浏览器语言设置来设置合适的语言。当我向 Rails 应用程序提供 IPv6 地址时,IP 地址返回 :::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
也支持ipv6
.
您可以使用Geocoder.search()
按ipv6
地址搜索:
Geocoder.search(ipaddr)
Geocoder.search('2607:fea8:1360:f7d:dce7:b7f0:e0b6:1014')