ruby - 获取当前主机的 FQDN 的正确方法是什么?

标签 ruby deprecated hostname rubocop fqdn

有一段时间我使用代码:

hostname = Socket.gethostbyname(Socket.gethostname).first 

取自here .

但是,正如评论所说 - 它已被弃用,现在 rubocop 和 ruby​​ 本身都在提示:

=$ ./z.rb 
./z.rb:5: warning: Socket.gethostbyname is deprecated; use Addrinfo.getaddrinfo instead.

=$ rubocop z.rb
...
z.rb:5:13: W: Lint/DeprecatedClassMethods: Socket.gethostbyname is deprecated in favor of Addrinfo#getaddrinfo.
puts Socket.gethostbyname(Socket.gethostname).first
            ^^^^^^^^^^^^^

问题是我不知道如何使用 getaddrinfo 来获取相同的信息。谁能举个例子吗?

现在,我想我只会使用:

`hostname --fqdn`

这是有效的,因为我只在 Linux 上运行它,但这并不是一个很好的方法。

最佳答案

以其他方式获得帮助,但认为其他人也可能受益。

当前的方法是:

require 'socket'
Addrinfo.getaddrinfo(Socket.gethostname, nil).first.getnameinfo.first

关于ruby - 获取当前主机的 FQDN 的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73237033/

相关文章:

ruby-on-rails - 有没有一种方法可以在 Ruby 中迭代特定的 XML 标记?

Ruby mixin 覆盖方法说明

java - 为什么 Files.deleteDirectoryContents() 在 Guava 中被弃用?

java - javadoc 中的 -nodeprecated 选项似乎不起作用。我能做什么?

来自服务器端的 C++ 套接字主机名

ruby-on-rails - rails : Capyabra/Selenium Chrome-Driver Settings

ruby - 在 Ruby 中为 .split 方法使用多个分隔符

Java - 弃用的方法 - 怎么办?

unix - 如何在不登录主机的情况下从IP查找主机名

dns - 如何通过名称而不是 IP 地址访问 docker 容器?