Ruby 包含模块时self.class.method如何工作?

Ruby 包含模块时self.class.method如何工作?,ruby,Ruby,我使用的是HTTParty,您可以根据文档创建一个类: class SomeClass include HTTParty base_uri 'host' def index self.class.get('/path') end end 我不确定模块中如何声明get方法 获取方法在 这是在名为ClassMethods的模块上定义的。如果您进一步查找文件httparty/httparty.rb。在第20行,您将看到: def self.incl

我使用的是HTTParty,您可以根据文档创建一个类:

class SomeClass 
    include HTTParty
    base_uri 'host'
    def index 
        self.class.get('/path')
    end
end

我不确定模块中如何声明
get
方法

获取方法在

这是在名为
ClassMethods
的模块上定义的。如果您进一步查找文件
httparty/httparty.rb
。在第20行,您将看到:

def self.included(base)
  base.extend ClassMethods
当一个模块包含在另一个模块或类中时,调用


此代码确保当
HTTParty
模块包含在另一个模块或类中时,在
HTTParty::ClassMethods
中定义的方法将扩展(作为类方法添加)到宿主对象上。它们成为类方法。

模块提供类单例方法,这就是如何获得
self.class.get
workingtl;博士-。
def self.included(base)
  base.extend ClassMethods