Lai Yu-Hsuan
Lai Yu-Hsuan

Reputation: 28141

why do we need ClassMethods and InstanceMethods?

I read the API for ActiveSupport::Concern. There are ClassMethods and InstanceMethods, we can put class methods in ClassMethods.

But the M's host can use the methods defined in M, can't it? Why can't I just write:

module M
  def self.x
  end

  def y
  end
end

rather than:

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

Upvotes: 16

Views: 9451

Answers (2)

Dave Newton
Dave Newton

Reputation: 160321

You might be interested in Yehuda's take on this pattern. I think the reason for some of it is historical, since they're not really needed unless you're doing manually what Ruby will do automatically through include and extend.

Upvotes: 13

Michael De Silva
Michael De Silva

Reputation: 3818

Dependencies are taken care of. See the example provided here.

Upvotes: 3

Related Questions