👋
Ruby で alias 元のメソッドを取得する
Ruby で alias 元のメソッドって取得できるんだっけ?を調べたので覚書。
例えば次のような alias_method
でメソッド定義されている時に foo
から puts
を取得することを想定しています。
module Kernel
alias_method :foo, :puts
end
この場合 Method#original_name
で alias 元のメソッド名を取得することができます。
module Kernel
alias_method :foo, :puts
end
# 元々のメソッド名が取得できる
p method(:foo).original_name
# => :puts
また、これは alias_method
がネストしている場合やそもそも alias_method
されてないメソッドでも元のメソッド名を取得することができます。
module Kernel
alias_method :foo, :puts
alias_method :bar, :foo
end
# ネストしていても元のメソッド名が取得できる
p method(:bar).original_name # => :puts
# そもそも alias_method されていなくてもメソッド名が取得できる
p method(:puts).original_name # => :puts
ちなみに alias
でも同じ挙動になります。
module Kernel
alias foo puts
end
# 元々のメソッド名が取得できる
p method(:foo).original_name
# => :puts
Discussion