【问题标题】:Ruby-on-Rails, Geocoding and IPv6Ruby-on-Rails、地理编码和 IPv6
【发布时间】:2020-05-02 20:22:46
【问题描述】:

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

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

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

我已经通过互联网搜索了我的方式,但没有找到具体的解决方案。

【问题讨论】:

    标签: ruby-on-rails ruby rubygems geocoder


    【解决方案1】:

    您可以使用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"
    

    如果您想要更高级的功能,请尝试同样支持ipv6ipaddress gem。

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

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

    【讨论】:

    • IPAddr 是 stdlib 的一部分,不是 gem。
    • 谢谢!这非常有帮助:)
    猜你喜欢
    • 1970-01-01
    • 2015-01-10
    • 2011-03-15
    • 2015-10-27
    • 1970-01-01
    • 2012-02-17
    • 1970-01-01
    • 1970-01-01
    • 2017-07-03
    相关资源
    最近更新 更多