0

我有以下示例

class Test
  configure_helper
end

module ConfigureHelper
  module ClassMethods
    def configure_helper
    end
  end
end

ConfigureHelper 具有更多功能,可以使用包含该模块的 ClassMethods 扩展类。

所以问题是,如果我使用以下代码包含模块

Test.send :include, ConfigureHelper

测试类将被加载,并为 configure_helper 引发 NoMethodError。

有什么方法可以附加 configure_helper 方法,这样 configure_helper 就不会被调用?

4

2 回答 2

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
于 2012-07-12T11:33:59.207 回答
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
于 2012-07-12T11:49:34.923 回答