Display instance variable values

If I have a people class with instance variables @name @age and @gender
and an instance of that class called peep (justa an example).
If I want to see all the available instance variables I can do:

p peep.instance_variables => ["@age", "@name", "@gender"]

Is there a way to get the value of those instance variables for the peep
instance without calling a class method ? Say there is full r/w access
to the instance variables.

Something like:

peep.instance_variables.each do |var|

   var.(display value somehow)

end

Thanks.

···

--
Posted via http://www.ruby-forum.com/.

replace the line "var.(display value somehow)" with "puts
peep.instance_variable_get(var)"

···

On Sat, Nov 13, 2010 at 3:08 PM, John Sayeau <johnsayeau@gmail.com> wrote:

If I have a people class with instance variables @name @age and @gender
and an instance of that class called peep (justa an example).
If I want to see all the available instance variables I can do:

p peep.instance_variables => ["@age", "@name", "@gender"]

Is there a way to get the value of those instance variables for the peep
instance without calling a class method ? Say there is full r/w access
to the instance variables.

Something like:

peep.instance_variables.each do |var|

  var.(display value somehow)

end

Thanks.

--
Posted via http://www.ruby-forum.com/\.

What are you trying to do? This seems a little strange to me.

In any case, if the instance variable are readable or accessible, i.e.
defined with attr_reader, attr_accessor, or have methods to get them,
you can use send to get at their values:

peep.instance_variables.each do |var|
  puts peep.send(var.sub('@', ''))
end

Again, it feels a little strange to me.

HTH,
Ammar

···

On Sat, Nov 13, 2010 at 11:08 PM, John Sayeau <johnsayeau@gmail.com> wrote:

If I have a people class with instance variables @name @age and @gender
and an instance of that class called peep (justa an example).
If I want to see all the available instance variables I can do:

p peep.instance_variables => ["@age", "@name", "@gender"]

Is there a way to get the value of those instance variables for the peep
instance without calling a class method ? Say there is full r/w access
to the instance variables.

Something like:

peep.instance_variables.each do |var|

var.(display value somehow)

end

Try using instance_variable_get:

p peep.instance_variables # => ["@age", "@name", "@gender"]

peep.instance_variables.each do |var|
   p var.instance_variable_get var
end

···

--
Posted via http://www.ruby-forum.com/.

That won't work.
Your asking an instance variable (var) to show its instance variables.
Tried it just to be sure.

···

--
Posted via http://www.ruby-forum.com/.

Not trying to do anything other than experiment. I was playing with for
the first time today and the book I'm readin said the view had access to
the controller's instance variables. I was trying to find out what other
instance variables/values the view could access. in the erb file id put
this code in:
<% self.instance_variables.each do |var| %>
<%= h(var) %>
<%end%>

And it gave me a list of the instance variables without values... just
trying to learn by experimenting.

···

--
Posted via http://www.ruby-forum.com/.

Ah. I forgot about that one.

Thanks,
Ammar

···

On Sat, Nov 13, 2010 at 11:42 PM, Josh Cheek <josh.cheek@gmail.com> wrote:

replace the line "var.(display value somehow)" with "puts
peep.instance_variable_get(var)"