Есть два способа сделать это:
obj.class.instance_methods(false)
, где 'false' означает, что он не будет включать методы суперкласса, например, имея:
class Person
attr_accessor :name
def initialize(name)
@name = name
end
end
p1 = Person.new 'simon'
p1.class.instance_methods false # => [:name, :name=]
p1.send :name # => "simon"
другой с:
p1.instance_variables # => [:@name]
p1.instance_variable_get :@name # => "simon"