我想做这样的事情:
module Mixin
def self.included(base)
base.include AnotherMixin
...
end
end
给出错误
NoMethodError - private method `include' called for Class
如何在mixin中包含mixin以用于我定义的方法?
答案 0 :(得分:3)
如何在mixin中包含mixin以用于我定义的方法?
由于错误消息清楚地告诉您,#include
是私有方法,因此在Ruby中不允许使用显式接收器。因此,要完成此操作,您只需要从base
的方法调用中删除#include
。它将在模块AnotherMixin
内包含模块mixin
。现在,#include
被隐式self
调用,它已被设置为模块对象Mixin
。
以下将完成工作: -
module Mixin
def self.included(base)
include AnotherMixin
#...
end
end