Search code examples
rubymoduleclass-methodinstance-methods

Ruby modules and extend self


In what sort of situation is the code:

module M
   extend self
   def greet
    puts "hello"
   end

end

more beneficial to use over say something like:

module M
   def self.greet
    puts "hello"
   end
end

In the top, one is an instance method being extended, and the latter is just a class method, but when calling either method, you'd have to M.greet , right? I was just curious if anyone could shed some light on when to use one code over the other. Thanks!


Solution

  • The first example is typically a way people achieve the functionality of module_function (when they do not know the existence of this method).

    A module_function is both an instance method and a class method. In your second code example the method is just a class method.