From: kachick1@... Date: 2015-09-07T17:00:35+00:00 Subject: [ruby-core:70678] [Ruby trunk - Bug #11512] [Open] DelegateClass.#public_{instance_}methods are returning difference values. Issue #11512 has been reported by Kenichi Kamiya. ---------------------------------------- Bug #11512: DelegateClass.#public_{instance_}methods are returning difference values. https://bugs.ruby-lang.org/issues/11512 * Author: Kenichi Kamiya * Status: Open * Priority: Normal * Assignee: * ruby -v: ruby 2.2.3p173 (2015-08-18 revision 51636) [x86_64-linux] * Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN, 2.2: UNKNOWN ---------------------------------------- Is this intended behavior? A patch is PR#926(https://github.com/ruby/ruby/pull/926) ~~~ require 'delegate' class Parent def parent_public; end protected def parent_protected; end end class Child < Parent end class DelegatorChild < DelegateClass(Parent) end class Parent def parent_public_added; end protected def parent_protected_added; end end ignores = Object.public_instance_methods | Delegator.public_instance_methods p(Child.public_instance_methods - ignores) #=> [:parent_public, :parent_public_added] p(Child.new.public_methods - ignores) #=> [:parent_public, :parent_public_added] p(DelegatorChild.public_instance_methods - ignores) #=> got: [:parent_public], expected: [:parent_public, :parent_public_added] p(DelegatorChild.new(Parent.new).public_methods - ignores) #=> got: [:parent_public, :parent_public_added, :parent_protected]], expected: [:parent_public, :parent_public_added] ~~~ -- https://bugs.ruby-lang.org/