Hostname
Простой способ получить имя хоста в Ruby:
require 'socket'
hostname = Socket.gethostname
Проблема в том, что хост полагается на свое имя, поскольку использует системный вызов gethostname
или uname
, поэтому он не будет работать для исходной проблемы.
Функционально это идентично ответу hostname
, без вызова внешней программы. Имя хоста может быть или не быть полным, в зависимости от конфигурации машины.
IP-адрес
Начиная с ruby 1.9, вы также можете использовать библиотеку Socket для получения списка локальных адресов. ip_address_list
возвращает массив объектов AddrInfo . То, как вы выберете его, будет зависеть от того, что вы хотите сделать, и от того, сколько интерфейсов у вас есть, но вот пример, который просто выбирает первый IP-адрес без обратной связи в виде строки:
require 'socket'
ip_address = Socket.ip_address_list.find { |ai| ai.ipv4? && !ai.ipv4_loopback? }.ip_address