Project

General

Profile

Actions

Feature #614

closed

instance_method(ancestor)

Added by trans (Thomas Sawyer) over 13 years ago. Updated over 4 years ago.

Status:
Rejected
Priority:
Normal
Target version:
[ruby-core:19120]

Description

=begin
Currently Module#instance_methods takes a single argument, true or false, as to whether to include all ancestor's methods. However sometimes limiting the search at a particular ancestor is helpful. Currently this requires code along the lines of:

 meths = []
 FooClass.ancestors[0..FooClass.ancestors.index(FooAncestor)].each do |anc|
   meths = meths | anc.instance_methods(false)
 end

But it would be nice if we could simply use:

 instance_methods(FooAncestor)

This change is, practically-speaking, backward compatible, since 'true' can be the same as 'Kernel', encompassing the entire ancestry.

This change is applicable to the entire family of "methods" methods, including Kernel#methods.

This change also helps eliminate the widely disliked true|false arguments.

The particular use case that brought this to mind was trying to write a Module#conflict? method that lists the methods two modules or classes have in common, but excluding the methods that they share from a common ancestor.
=end

Actions

Also available in: Atom PDF