Rubyは何を拡張しますか

概要

このコードの拡張機能は何でしょうか?

class << self
    def extended(klass)
      klass.class_exec do
        define_method :supported_attrs do
          that_klass = self.class
          that_klass.const_defined?(:ATTRS) ? that_klass.const_get(:ATTRS) : []
        end
      end
    end
  end

https://translate.google.com/translate?hl=ja&sl=en&tl=ja&u=https://github.com/lokalise/ruby-lokalise-api/blob/2d78458cbb16fa62d9f6018e79b7ea5da53b77f6/lib/ruby_lokalise_api/concerns/attrs_loadable.rb#L8

プロジェクトでは使い道がない サポートされる属性のみ クラスはどこから来たのですか? プロジェクトには言及がありません

解決策

したがって、extend 関数に詳しくない方のために説明すると、この関数の短いバージョンは、指定されたモジュールのメソッドをクラスに追加するものです。 extend を呼び出すと、クラスをパラメータとして .extended メソッドがモジュール上で呼び出されます。

module MyModule
  def self.extended(klass)
    p klass
  end
end

class MyClass
  extend MyModule
  # => Will print "MyClass"
end

したがって、あなたの場合、モジュールが拡張されているインスタンスを探して、それらのメソッドが追加される場所を見つけることができます。