Object defines methods for listing the names of methods defined on the object. These methods return arrays of methods names.
o = "a string" o.methods # => [ names of all public methods ] o.public_methods # => the same thing o.public_methods(false) # Exclude inherited methods o.protected_methods # => []: there aren't any o.private_methods # => array of all private methods o.private_methods(false) # Exclude inherited private methods def o.single; 1; end # Define a singleton method o.singleton_methods # => [:single]It is also possible to query a class for the methods it defines rather than querying an instance of the class:
String.instance_methods == "s".public_methods # => true String.instance_methods(false) == "s".public_methods(false) # => true String.public_instance_methods == String.instance_methods # => true String.protected_instance_methods # => [] String.private_instance_methods(false) # => ["initialize_copy", # "initialize"]