Understanding that there are no class methods, only instance methods
Ruby programmers often refer to methods you can call on classes as class methods, and methods that you can call on modules as module methods. However, Ruby does not have class methods or module methods as separate concepts – it only has instance methods. Every method that you would think of as a class or a module method is just an instance method of the class or module's singleton class. That doesn't mean that you should stop using the terms class method or module method – it just means you should understand that these methods are not special and are just like all other methods.
You will often see class methods defined on classes in one of four ways. The most common way is to use self
in front of the method, as shown here:
class Foo   def self.bar     :baz   end end
This makes it obvious that the method being defined is a singleton method, because...