2017-02-21 3 views
1

私はHTTPartyを使用して、クラスを作成することができますドキュメントに基づいています:モジュールを組み込むときにself.class.methodはどのように機能しますか?

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

私はモジュール内で宣言get方法があるかわかりません。

+1

モジュールはクラスシングルトンメソッドを提供します。これはあなたが 'self.class.get'を得る方法です –

+1

** tl; dr ** - [' included'フック](https://github.com/jnunemaker/httparty /blob/master/lib/httparty.rb#L19-L26)。 – ndn

答えて

2

get方法は、これをClassMethodsと呼ばれるモジュールで定義されているline 484 of httparty/httparty.rb

def get(path, options = {}, &block) 
    perform_request Net::HTTP::Get, path, options, &block 
end 

で定義されています。ファイルhttparty/httparty.rbをさらに見てください。ライン20で、次のように表示されます:モジュールが他のモジュールまたはクラスに含まれている場合に

def self.included(base) 
    base.extend ClassMethods 

method includedが呼び出されます。

このコードでは、HTTPartyモジュールが別のモジュールまたはクラスに含まれている場合、HTTParty::ClassMethodsで定義されているメソッドがホストオブジェクトに拡張されます(クラスメソッドとして追加されます)。それらはクラスメソッドになります。

関連する問題