特異メソッド(クラスメソッド等)に対しては他のメソッドと同じようにaliasする事は出来ません。
例)class Drink def self.shurui p "drink" end end class Drink alias tmp_shurui shurui end # => NameError: undfined method `shurui' for class `Drink' class Drink alias tmp_shurui self.shurui end # => SyntaxError: ~
特異メソッドに対してaliasを使うには次のような方法があります。
方法1class Drink class << self alias tmp_shurui shurui end end Drink.tmp_shurui # => "drink"方法2
class Drink instance_eval{alias tmp_shurui2 shurui} end Drink.tmp_shurui2 # => "drink"
また特異メソッドのaliasの二重実行を防止するには以下のような方法があります。
aliasの二重実行防止class Drink unless respond_to?(:tmp_shurui) class << self alias :tmp_shurui :shurui end end end
class Drink class << self alias :tmp_shurui :shurui unless method_defined?(:tmp_shurui) end end
少しめんどくさいですね。 aliasの二重実行の問題点についてはこちらで少し詳しく書いています。