0

次の例があります

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 メソッドをアタッチする方法はありますか?

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 に答える