Ruby 3.2 - Module

Ruby 3.2 アドベントカレンダーの17日目の記事です。

qiita.com


Module

Module#const_added

Feature #17881: Add a Module#const_added callback - Ruby master - Ruby Issue Tracking System

Module#const_added が追加された。定数が追加されたときに実行されるメソッド。 モジュールやクラスが追加されたときも実行される。

module Hoge
  def self.const_added(const)
    puts "#{const.inspect} is added"
  end
end

Hoge::CONST = 1
#=> :CONST is added

class Hoge::Fuga
end
#=> :Fuga is added

Module#undefined_instance_methods

Feature #12655: Accessing the method visibility - Ruby master - Ruby Issue Tracking System

Module#undefined_instance_methods が追加された。undef されたメソッドの一覧が返る。

class Hoge
  def hoge
  end
end
Hoge.undefined_instance_methods  #=> []

class Hoge
  undef hoge
end
Hoge.undefined_instance_methods  #=> [:hoge]