rails module include way

以下方式的代码在rails中源码中的相当多见,其中的self.included(base)方法是一个回调方法,当此module被其他名为basemodule (或者class) included的时候触发此方法。通过class_evalincludeextend加入了实例方法和类方法到base中,代码划分得很干净。

module ActionController  module Components    def self.included(base)      base.class_eval do        include InstanceMethods        extend ClassMethods        helper HelperMethods      end    end    module ClassMethods    end    module HelperMethods    end    module InstanceMethods    end  endend