@m_seki の

I like ruby tooから引っ越し

ホスト名を求める

IPv4のドット表記、IPv6のドット表記、gethostname、"localhost"の優先度で返してみる。

こうか? うーむ。drb/drb.rbのself.getservernameを取り替えると良いような気がするけどどう?

require 'socket'

def ipv4_addr(hostname)
  addr = Socket.getaddrinfo(hostname, nil, 
                            Socket::AF_INET,
                            Socket::SOCK_STREAM, Socket::IPPROTO_IP)
  addr[0][3]
rescue
  nil
end

def ipv6_addr(hostname)
  addr = Socket.getaddrinfo(hostname, nil, 
                            Socket::AF_INET6,
                            Socket::SOCK_STREAM, Socket::IPPROTO_IP)
  addr[0][3]
rescue
  nil
end

def getservername_org(hostname)
  Socket.gethostbyname(hostname)[0] rescue nil
end

def getservername
  host = Socket.gethostname

  ipv4_addr(host) || ipv6_addr(host) || getservername_org(host) || 'localhost'
end

p getservername