如何在rails中获取IP地址

时间:2013-12-26 04:49:22

标签: ruby-on-rails ip-address

如何从您所在国家/地区的位置获取IP地址?

我尝试在控制台中键入request.remote_ip但是我得到了ip地址127.0.0.1,这是localhost吗?...我不会从国家/地区用户获取IP地址。

我使用名为geokit-rails的宝石来获取基于国家/地区的IP地址。

如果我尝试使用此代码,请从您的位置获取IP地址:

Model.geocode(ip-addess)

提前感谢。

3 个答案:

答案 0 :(得分:1)

您也可以使用:

  class ActionDispatch::Request
    def remote_ip
      "38.89.128.21"
    end
  end

config / environments / development 中将您的IP欺骗到NYC(或者您设置IP的任何地方),当它将成为您本地计算机访问它时。你正在覆盖这个功能。如果您正在使用IP地址进行地理定位,这非常有用。

编辑:我不小心写了 / production 而不是 / development 。不要那样做。不好的想法,你所有的用户都来自纽约。

答案 1 :(得分:0)

request.remote_ip为您提供“始发IP地址”。因为在您的开发计算机中,您的服务器和客户端与127.0.0.1相同。

要确认此操作,请从其他计算机访问您的rails应用程序。

答案 2 :(得分:0)

要使用开发主机的外部IP地址而不是“localhost”地址或127.0.0.1的环回地址,请显式绑定到主机的外部IP地址。默认情况下,服务器可以侦听0.0.0.0(任何地址),并且在与开发主机在同一主机上进行测试时,最终会使用localhost地址。

使用web brick明确绑定,例如:

rails server -b my.real.ip.address

要使用apache / passenger或类似方法显式绑定,请在apache config中使用:

Listen my.real.ip.address:port