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