Tbpgr Blog

Employee Experience Engineer tbpgr(てぃーびー) のブログ

Ruby | Module | method_removed

概要

Module#method_removed(name) -> ()

詳細

メソッドが Module#remove_method により削除された時にインタプリタがこのメソッドを呼び出す。

サンプルコード
class Hoge
  def self.method_removed(name)
    puts "method_removed => #{name}"
  end

  %w{hoge hige hage}.each do |m|
    define_method m.to_sym do
      puts m
    end
  end
end

hoge = Hoge.new
print hoge.public_methods(false), "\n"
puts hoge.class.class_eval {
  remove_method :hoge
}
print hoge.public_methods(false), "\n"

出力

[:hoge, :hige, :hage]
method_removed => hoge
Hoge
[:hige, :hage]