2011-09-18 5 views
14

私はActiveSupport :: ConcernのAPIを読んでいます。 ClassMethodsInstanceMethodsがあり、クラスメソッドをClassMethodsに入れることができます。なぜClassMethodsとInstanceMethodsが必要ですか?

しかし、MのホストはMで定義された方法を使用できますか?なぜ私は書くことができません。

module M 
    def self.x 
    end 

    def y 
    end 
end 

いうより:

module M 
    module ClassMethods 
    def x 
    end 
    end 
    module InstanceMethods 
    def y 
    end 
    end 
end 

答えて

11

Yehuda's take on this patternに興味があるかもしれません。 Rubyが自動的に行う処理をincludeextendにするのでなければ、実際には必要ないので、その理由のいくつかは歴史的だと思います。

1

依存関係の世話をしています。提供された例を参照してください。here

関連する問題