Bug #10857
Updated by nobu (Nobuyoshi Nakada) about 9 years ago
~~~ruby require 'resolv' resolver = Resolv::DNS.new(:nameserver => ['8.8.8.8'], :search => [], :ndots => 1) hosts = resolver.getresources('ruby.org', Resolv::DNS::Resource::IN::A) returned_record = hosts.first a = Resolv::DNS::Resource::IN::A #create an identical record new_record = a.new(returned_record.address) new_record == returned_record =>false #but should return true #If I change this class Resolv::DNS::Resource def ==(other) # :nodoc: return false unless self.class == other.class s_ivars = self.instance_variables s_ivars.sort! **s_ivars.delete "@ttl"** o_ivars = other.instance_variables o_ivars.sort! **o_ivars.delete "@ttl"** return s_ivars == o_ivars && s_ivars.collect {|name| self.instance_variable_get name} == o_ivars.collect {|name| other.instance_variable_get name} end end #To this class Resolv::DNS::Resource def ==(other) # :nodoc: return false unless self.class == other.class s_ivars = self.instance_variables s_ivars.sort! **s_ivars.delete(:@ttl)** o_ivars = other.instance_variables o_ivars.sort! **o_ivars.delete(:@ttl)** return s_ivars == o_ivars && s_ivars.collect {|name| self.instance_variable_get name} == o_ivars.collect {|name| other.instance_variable_get name} end end new_record == returned_record =>true ~~~