将模块包含到类中,类Method引用要包含的模块



我有以下示例

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。

有没有办法附加config_helper方法,这样就不会调用config_helpr?

为什么不在类定义中包含模块权限?

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

试试

  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

最新更新