如何使用 Rails 获取我自己的 IP 地址?
当我这样做时,我得到了:127.0.0.1
@ip = request.remote_ip
有没有办法获得公共IP?
如何使用 Rails 获取我自己的 IP 地址?
当我这样做时,我得到了:127.0.0.1
@ip = request.remote_ip
有没有办法获得公共IP?
尝试:
require 'socket'
ip=Socket.ip_address_list.detect{|intf| intf.ipv4_private?}
ip.ip_address if ip
我相信request.env['SERVER_NAME']
有效,如果你想反映服务器基地址
试试这个:
request.env['REMOTE_ADDR']
使用您的 IP 调用页面,而不是本地主机。即,192.168.2.9:3000
在默认开发环境的情况下会产生:
request.env['REMOTE_ADDR']
#=> 192.168.2.9
或者:
request.remote_ip
#=> 192.168.2.9
由于您的请求是服务器本地的,因此它返回“localhost”地址,即127.0.0.1
. 如果您从托管在 Internet 上的计算机请求它,它将为您提供远程服务器的静态 IP。
如果您想要自己互联网的静态 IP,请访问http://ping.eu,您可以看到您的公共 IP。
这并不能回答这个问题。我认为其他人会发现这个答案很有帮助。
问题:
我正在开发一个移动应用程序。所以,当我//debug
应用程序在真正的移动设备中时。图片 url 不适用于.hot reload
live reload
localhost:3000
图像与 ip 一起使用,如下所示:http://192.168.0.102:3000/user/1/profile-223hfkj33.jpg
Problem is
每次打开笔记本电脑并连接到wifi路由器时,笔记本电脑的ip都会改变。因此,每次我需要更改文件asset_host
时。environments/development.rb
查看以前的答案,我找到了解决方案:
解决方案:
在environments/development.rb
我写这段代码:
server_address = "#{Socket.ip_address_list.detect(&:ipv4_private?).try(:ip_address)}:3000"
config.asset_host = server_address
puts "Server address: #{server_address}"
# when I run `rails s`, this line prints server address in console
所以,它asset_host
是这样设置的:192.168.0.102:3000
当我打开笔记本电脑时,笔记本电脑会获得新的 IP 地址并且它可以工作。