Ruby provides various ways to define and manipulate methods. Methods can be defined on classes, objects, and singleton classes. Singleton classes allow defining methods that are only available to a specific object. Ruby also supports currying methods to return procs that can later be called. Methods can be aliased, undefined, or dynamically defined/manipulated at runtime using techniques like eval, instance_eval, and reflection. Classes in Ruby are also objects that can have singleton classes and methods defined on them.