我正在维护一个Ruby on Rails应用程序,正在寻找一种简单的方法来查找我所在盒子的主机名或IP地址(因为它是一个VM,新实例可能有不同的主机名或IP地址).在Ruby on Rails中有没有一种快速简便的方法来实现这一点?
编辑:下面的答案是正确的,但克雷格提供的澄清很有用(另请参见答案中提供的链接):
[以下]代码不构成错误
我正在维护一个Ruby on Rails应用程序,正在寻找一种简单的方法来查找我所在盒子的主机名或IP地址(因为它是一个VM,新实例可能有不同的主机名或IP地址).在Ruby on Rails中有没有一种快速简便的方法来实现这一点?
编辑:下面的答案是正确的,但克雷格提供的澄清很有用(另请参见答案中提供的链接):
[以下]代码不构成错误
require 'socket'
def local_ip
orig, Socket.do_not_reverse_lookup = Socket.do_not_reverse_lookup, true # turn off reverse DNS resolution temporarily
UDPSocket.open do |s|
s.connect '64.233.187.99', 1
s.addr.last
end
ensure
Socket.do_not_reverse_lookup = orig
end
# irb:0> local_ip
# => "192.168.0.127"