tags:

views:

591

answers:

2
+4  Q: 

Ruby: extend self

In Ruby, I understand the basic idea of extend. However, what's happening in this segment of code? Specifically, what does extend do? Is it just a convenient way of making the instance methods into class methods? Why would you do it this way rather than specifying class methods from the beginning?

module Rake
  include Test::Unit::Assertions

  def run_tests # etc.
  end

  # what does the next line do?
  extend self
end
+3  A: 

In a module, self is the module class itself. So for example

puts self

will return Rake so,

extend self

basically makes the instance methods define in Rake available to it, so you can do

Rake.run_tests
ennuikiller
+4  A: 

It is a convenient way to make instance methods into class methods. But you can also use it as a more efficient singleton.

+1, though there's nothing wrong with the southern hemisphere ;)
Peter