ipaddrを使用して、いくつかのIPアドレスを昇順で並べ替えようとしています。これが機能しない理由がわかりません。カスタムソートを実行した後、順序は影響を受けません。
require 'ipaddr'
ip_array = Array.new
ip_array2 = Array.new
ip_array = ["d1.mysite.com",
"d3.mysite.com",
"d2.mysite.com",
"d6.mysite.com",
"d32.mysite.com",
"d5.mysite.com",
"d9.mysite.com",
"d34.mysite.com"]
## First, get IP addresses and push onto ip_array2
ip_array.each { |x| ip_array2.push(IPSocket::getaddress(x)) }
## Let's see the unsorted array contents
ip_array2.each { |x| puts x }
## Now, sort IP addresses in ip_array2
ip_array2.sort { |a,b| IPAddr.new( a ) <=> IPAddr.new( b ) }
## Let's see the sorted array contents
ip_array2.each { |x| puts x }
BEFORE SORT (1st 3 octets are identical)
xxx.xx.xx.78
xxx.xx.xx.114
xxx.xx.xx.54
xxx.xx.xx.57
xxx.xx.xx.58
xxx.xx.xx.79
xxx.xx.xx.81
xxx.xx.xx.100
AFTER SORT (1st 3 octets are identical)
xxx.xx.xx.78
xxx.xx.xx.114
xxx.xx.xx.54
xxx.xx.xx.57
xxx.xx.xx.58
xxx.xx.xx.79
xxx.xx.xx.81
xxx.xx.xx.100