以下方式的代码在rails中源码中的相当多见,其中的self.included(base)方法是一个回调方法,当此module被其他名为base的module (或者class) included的时候触发此方法。通过class_eval,include,extend加入了实例方法和类方法到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 |