From: "David A. Black" Date: 2008-03-14T12:27:11+09:00 Subject: Re: Naming ruby class attribute and methods Hi -- On Fri, 14 Mar 2008, Demonic Software wrote: > Hello, > > Is there a way to name all the methods and attributes/ class instantiated > variables that have been created? For example, from the class below, I > would like to get all the variables instantiated from the initialize and > example methods, and then I would also like to be able to get the method > names. > > > #pseudo code, not sure if it really runs > class Foo > def initialize() > @thestring = '' > @haha = "HA HA HAA!" > @var = "I am a variable" > end > def example(arg) > @arg = arg > @thestring = "#{@haha} #{@var}: #{arg}" > end > def thestring > @thestring > end > end > > > So is there a way to extract ["thestring", "var", "haha", "arg"] for the > variable names and then ["initialize", "example", "thestring"] for the > method names. I can see how I would do it with regular expressions and > ruby2ruby, but I was wondering if there was another way of extracting the > information. Thanks in advance. You can get method and instance variable names. An "attribute" is really a kind of virtual construct, composed of methods and (usually) instance variables, so it doesn't appear as a separate thing when you do introspective stuff on the object. The main time "attribute" exists is when you create them; after that, they're just methods (though one is of course free to continue to call them attributes). Foo.instance_methods(false) will give you all the instance methods defined in Foo. (The rather cryptic "false" means: don't include methods created higher in the ancestry.) To get the instance variables you have to instantiate the class, run the methods that create them, and then call the #instance_variables method. (Just defining methods with i. vars inside them doesn't create the i. vars.) David -- Upcoming Rails training from David A. Black and Ruby Power and Light: ADVANCING WITH RAILS, April 14-17 2008, New York City CORE RAILS, June 24-27 2008, London (Skills Matter) See http://www.rubypal.com for details. Berlin dates coming soon!