Techioz Blog

ルビィ:自己を拡張する

概要

Ruby では、extend の基本的な考え方を理解しました。しかし、コードのこの部分では何が起こっているのでしょうか?具体的には、extend は何をするのでしょうか?これはインスタンス メソッドをクラス メソッドにするための単なる便利な方法なのでしょうか?なぜ最初からクラスメソッドを指定せずにこのようにするのでしょうか?

module Rake
  include Test::Unit::Assertions

  def run_tests # etc.
  end

  # what does the next line do?
  extend self
end

解決策

インスタンス メソッドをクラス メソッドにするには便利な方法です。ただし、より効率的なシングルトンとして使用することもできます。