Brian Schlect wrote: > i want to be able to call get_methods in the parent class and have it > return the functions of the child class as well. so in this example: > > test_obj = bravo.new > bravo.get_methods I'm confused. Do you want Alpha.get_methods to return Alpha's and Bravo's methods, and Bravo.get_methods to return just Bravo's methods? Or do you want the exact same list of methods returned regardless of what level you call the method at? Here's a solution for the former (and, because I wonder if it's possibly what you want, it only includes the instance methods defined by Alpha and Bravo): class Alpha def self.inherited( subklass ) @self_and_subklasses ||= [self] @self_and_subklasses << subklass end def self.all_methods @self_and_subklasses ||= [self] @self_and_subklasses.map{ |klass| klass.instance_methods( false ) }.flatten end def alpha_test1; end def alpha_test2; end end class Bravo < Alpha def bravo_test1; end end p Alpha.all_methods #=> ["alpha_test1", "alpha_test2", "bravo_test1"] p Bravo.all_methods #=> ["bravo_test1"]