Actions
Feature #15781
openUnify Method List Introspection?
Status:
Open
Assignee:
-
Target version:
-
Description
Although Ruby has many core methods for retrieving the list of methods available to an object, or to the instances of a class, I believe they have gotten a little confusing (also see):
-
Object#methods
andModule#instance_methods
do not include private methods (at the same time they do include protected ones). There is alreadyObject#public_methods
(andObject#protected_methods
) for distinguishing visibility scope , but no way to get all methods of an object. - There is the inconsistency that in most cases the argument being passed to
*_methods
methods let's you decide if you want to consider the inheritance chain, or not - But the prominent exception isObject#methods
which instead toggles inheritance to singleton only! (for which we also haveObject#singleton_methods
) - There is no direct API for getting a list of private singleton methods
Now that we have keyword arguments, we could provide a single API for listing methods. One way of doing so could be the Object#shadow's methods method. Having a keyword arguments based API would allow users to specify the dimensions of their requests better - should it:
- return the object's methods, or methods of its instances?
- return only methods of a specific visibility scope?
- return only methods of a specific inheritance level (e.g. only singleton, or all the way down to
BasicObject
)?
What do you think about having one unified way for retrieving an object's method list?
Actions
Like0
Like0Like0