Ruby ロギング ライブラリの Logging.logger メソッドを調べていて、このコードに関連するgithub のソースから質問があります。
logger = ::Logging::Logger.new(name)
logger.add_appenders appender
logger.additive = false
class << logger
def close
@appenders.each {|a| a.close}
h = ::Logging::Repository.instance.instance_variable_get :@h
h.delete(@name)
class << self; undef :close; end
end
end
クラス << logger が eigen/meta/singleton クラスを logger オブジェクトに開き、インスタンス固有の close メソッドを追加することを理解しています。しかし、「class << self; undef :close; end」が何をし、何の目的で行われるのか正確にはわかりません。誰がそれが何を意味するのか教えてもらえますか?