From: nagachika00@... Date: 2015-02-17T14:28:32+00:00 Subject: [ruby-core:68150] [Ruby trunk - Bug #10857] Resolv::DNS::Resource ==() method incorrectly returns false due to TTL attrib Issue #10857 has been updated by Tomoyuki Chikanaga. Backport changed from 2.0.0: REQUIRED, 2.1: REQUIRED, 2.2: DONE to 2.0.0: REQUIRED, 2.1: DONE, 2.2: DONE Backported into `ruby_2_1` at r49628. ---------------------------------------- Bug #10857: Resolv::DNS::Resource ==() method incorrectly returns false due to TTL attrib https://bugs.ruby-lang.org/issues/10857#change-51530 * Author: Shayne Clausson * Status: Closed * Priority: Normal * Assignee: * ruby -v: ruby 1.9.3p545 (2014-02-24) [i386-mingw32] * Backport: 2.0.0: REQUIRED, 2.1: DONE, 2.2: DONE ---------------------------------------- ~~~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 ~~~ -- https://bugs.ruby-lang.org/