Naming ruby class attribute and methods

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.

Hi –

On Fri, 14 Mar 2008, Demonic S. wrote:

class Foo
@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

Thanks David.
Is there any way to get the methods on an object that is already
instantiated?

Thanks again

Hi –

On Fri, 14 Mar 2008, Demonic S. wrote:

Thanks David.
Is there any way to get the methods on an object that is already
instantiated?

Yes: object.methods

David

On Thu, Mar 13, 2008 at 10:39 PM, Demonic S.
[email protected] wrote:

Hi –

names.
@arg = arg
method names. I can see how I would do it with regular expressions and


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!

f = Foo.new
f.public_methods(false)

… works for the instance f

Todd

On Mar 13, 11:27 pm, “David A. Black” [email protected] wrote:

example methods, and then I would also like to be able to get the method
@arg = arg
ruby2ruby, but I was wondering if there was another way of extracting the
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.)

Kind of funny. I was just thinking about this before I sat down and
read this thread.

Ruby’s use of the term “attribute” is rather a misnomer. I would think
it much better if “attributes” referred to instance variables. Those
are the things that give state to objects. Attributes on the other
hand would be better off referred to as “accessors”.

T.