you can use obj.methods() to find all the methods available on the instance (inc methods from superclasses), and obj.methods(false) to get only the method defined on current singleton object. I'm not sure its possible to detect if these methods where created via attr_accessor though