Ruby Tips!

RubyのTipsを紹介します

特異クラスを開いてクラスメソッドを定義する

Rubyにおいて、クラスメソッドとはクラスオブジェクトの特異メソッドである。特異メソッドは特異クラスのインスタンスメソッドである。よって、クラスオブジェクトの特異クラスを開いてインスタンスメソッドを定義すれば、クラスメソッドを定義できることになる。以下はこれを利用して既存のクラスメソッドに別名を付けるサンプルコードである。

class Clazz
  def self.class_method
    puts "I'm class method!"
  end
end

class << Clazz
  alias class_method_alias class_method
end

Clazz.class_method #=> "I'm class method!"
Clazz.class_method_alias #=> "I'm class method!"