How to get attributes that were defined through attr_reader or attr_accessor
metaprogramming, ruby
Solution
Use introspection, Luke!
class A
attr_accessor :x, :y
def initialize(*args)
@x, @y = args
end
def attrs
instance_variables.map{|ivar| instance_variable_get ivar}
end
end
a = A.new(5,10)
a.x # => 5
a.y # => 10
a.attrs # => [5, 10]
Problem
Suppose I have a class `A` ``` class A attr_accessor :x, :y def initialize(x,y) @x, @y = x, y end end ``` How can I get `x` and `y` attributes without knowing how exactly they were named. E.g. ``` a = A.new(5,10) a.attributes # => [5, 10] ```