Reputation: 28141
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
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
Reputation: 3818
Dependencies are taken care of. See the example provided here.
Upvotes: 3