From: Robert Klemme Date: 2008-12-18T04:02:50+09:00 Subject: Re: function discovery On 17.12.2008 18:24, Phlip wrote: > > [Note: parts of this message were removed to make it a legal post.] > > I express no curiosity about the illegal parts! (-; > > Joshua Ball wrote: > >> I am curious if there is a programatic way to list all methods of a >> class. >> (Yes, I know about "ri", I am just curious here) > > ri only returns what the documentor felt like telling you. > > Here's my favorite wrapper on the 'public_methods' system: > > def what?(anObject) > p anObject.class.name > puts (anObject.public_methods - Object.new.public_methods).sort > end You do not need to construct an instance of Object - you can as well use Object.public_instance_methods. > Now you just say 'what? f', and it tells you what f's all about. It also > throws away all the stuff f inherited from Object, because you should > already know it! Here's an alternative version, which prints methods with the defining class. Note that this omits methods defined at the instance level. def what? o o.class.ancestors.each do |cl| p cl, cl.public_instance_methods(false).sort end end Kind regards robert