我有以下示例
class Test
configure_helper
end
module ConfigureHelper
module ClassMethods
def configure_helper
end
end
end
ConfigureHelper还有一些功能,可以使用包含该模块的ClassMethods扩展该类。
所以问题是,如果我使用以下代码来包含模块
Test.send :include, ConfigureHelper
将加载Test类,并为configure_helper引发NoMethodError。
有没有办法附加configure_helper方法,以便不会调用configure_helper?
答案 0 :(得分:1)
为什么不在模块定义中包含模块?
module ConfigureHelper
def self.included base
base.extend ClassMethods
end
module ClassMethods
def configure_helper
end
end
end
class Test
include ConfigureHelper
configure_helper
end
答案 1 :(得分:0)
试试吧
class Test
end
module ConfigureHelper
module ClassMethods
def self.included(base)
base.class_eval do
def configure_helper
p 'Yes'
end
end
end
end
end
Test.send(:include, ConfigureHelper::ClassMethods)
Test.new.configure_helper