I'm wondering if anyone here saw this post on ruby-talk. It's seem
like such a good idea to me that I was surprised with the minimal
response... but then again, it seems like very few core Rubyists spend
much time on ruby-talk these days. In any case, I figure I'd post it
here just to be sure.
= Problem
Currently Module#instance_methods (and company) take a single
argument, true or false, as to whether to include all ancestor
methods. I've written enough metacode to come across the need to limit
the search at a particular ancestor. This currently requires code
like:
meths = []
ancestors[0..ancestors.index(FooAncestor)].each do |anc|
meths = meths | anc.instance_methods(false)
end
It would be nice if we could simply say:
instance_methods(FooAncestor)
= Solution
I leave the full solution to more capable C peoples. I imagine it
would not be too difficult however.
= Analysis
This change is, practically-speaking, backward compatible. It also
eliminates the dreaded true|false argument, and can be applied to the
entire family of "methods" methods.
Thanks,
T.