Last Modified
1970-01-01 01:00:00 +0100
Requires

Description

A typical module looks like this

  module M
    def self.included(base)
      base.send(:extend, ClassMethods)
      base.send(:include, InstanceMethods)
      scope :foo, :conditions => { :created_at => nil }
    end

    module ClassMethods
      def cm; puts 'I am a class method'; end
    end

    module InstanceMethods
      def im; puts 'I am an instance method'; end
    end
  end

By using ActiveSupport::Concern the above module could instead be written as:

  module M
    extend ActiveSupport::Concern

    included do
      scope :foo, :conditions => { :created_at => nil }
    end

    module ClassMethods
      def cm; puts 'I am a class method'; end
    end

    module InstanceMethods
      def im; puts 'I am an instance method'; end
    end
  end