2013年11月23日土曜日

moduleの使い方3(active_support)

あまり良くないコード
module Loader
  extend ActiveSupport::Concern

  module ClassMethods
    def load_company
      puts "company"
    end
  end
end
module Util
  def self.included(base)
    #この時のbaseはLibです。つまりLib.load_companyを実行している。
    base.load_company
  end
end
class Lib
  include Loader
  include Util
end
良いコード
module Loader
  extend ActiveSupport::Concern

  module ClassMethods
    def load_company
      puts "company"
    end
  end
end

module Util
  extend ActiveSupport::Concern
  include Loader
  included do
    load_company
  end
end

class Lib
  include Util
end

0 件のコメント: