我正在维护一个Ruby on Rails应用程序,正在寻找一种简单的方法来查找我所在盒子的主机名或IP地址(因为它是一个VM,新实例可能有不同的主机名或IP地址).在Ruby on Rails中有没有一种快速简便的方法来实现这一点?

编辑:下面的答案是正确的,但克雷格提供的澄清很有用(另请参见答案中提供的链接):

[以下]代码不构成错误

推荐答案

coderrr.wordpress.com开始:

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"

Ruby相关问答推荐

ruby 3.1:使用方法(:名称)简化代码莫名其妙地失败

RSpec 中有没有一种方法可以同时断言调用次数和参数列表?

应用 ransack 日期字段过滤器后,相同的输出票证重复而不是一张

构造Ruby的现代方法是什么?

如何将两周时间添加到 Time.now?

在 Ruby 中,获取第一个块返回 true 的可枚举元素的最快方法是什么?

可可豆荚安装在iOS项目上不起​​作用

铲子 (<<) 运算符如何在 Ruby 哈希中工作?

用元素填充数组 N 次

如何在 Ruby 中创建私有类常量

Ruby 的所有/最佳列表?

无法将 RVM 安装的 Ruby 与 sudo 一起使用

获取下周一(或一周中的任何一天)的日期的 Ruby 代码

Mustache Templates 可以做模板扩展吗?

带有添加和删除参考的 Rails 迁移

计算文件中的行数而不将整个文件读入内存?

如何在 Ruby 中重命名文件?

如何在 Ruby 中对数组进行分块

Ruby 中的动态方法调用

更好的 ruby​​ markdown 解释器?