From 21bbcfe42cf163f532beff1f7a8ceb5e12f2907b Mon Sep 17 00:00:00 2001
From: Xavier Noria <fxn@hashref.com>
Date: Sat, 14 Aug 2010 17:04:17 +0200
Subject: reviews commit dcc9d38

---
 activesupport/lib/active_support/concern.rb | 54 ++++++++++++-----------------
 1 file changed, 22 insertions(+), 32 deletions(-)

(limited to 'activesupport')

diff --git a/activesupport/lib/active_support/concern.rb b/activesupport/lib/active_support/concern.rb
index d1e03e596c..ac94d12e5e 100644
--- a/activesupport/lib/active_support/concern.rb
+++ b/activesupport/lib/active_support/concern.rb
@@ -3,48 +3,48 @@ module ActiveSupport
   #
   #   module M
   #     def self.included(base)
-  #       base.send(:extend, ClassMethods)
+  #       base.extend, ClassMethods
   #       base.send(:include, InstanceMethods)
-  #       scope :foo, :conditions => { :created_at => nil }
+  #       scope :disabled, where(:disabled => true)
   #     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 <tt>ActiveSupport::Concern</tt> the above module could instead be written as:
-  #   
+  #
   #   require 'active_support/concern'
   #
   #   module M
   #     extend ActiveSupport::Concern
   #
   #     included do
-  #       scope :foo, :conditions => { :created_at => nil }
+  #       scope :disabled, where(:disabled => true)
   #     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
   #
-  # Moreover, it gracefully handles module dependencies. Given a Foo module and a Bar module which depends on the former, we would typically write the following:
+  # Moreover, it gracefully handles module dependencies. Given a +Foo+ module and a +Bar+
+  # module which depends on the former, we would typically write the following:
   #
   #   module Foo
   #     def self.included(base)
-  #       # Define some :enhanced_method for Host class
   #       base.class_eval do
-  #         def self.enhanced_method
-  #           # Do enhanced stuff
+  #         def self.method_injected_by_foo
+  #           ...
   #         end
   #       end
   #     end
@@ -52,7 +52,7 @@ module ActiveSupport
   #
   #   module Bar
   #     def self.included(base)
-  #       base.send(:enhanced_method)
+  #       base.method_injected_by_foo
   #     end
   #   end
   #
@@ -61,23 +61,13 @@ module ActiveSupport
   #     include Bar # Bar is the module that Host really needs
   #   end
   #
-  # But why should Host care about Bar's dependencies, namely Foo? We could try to hide these from Host directly including Foo in Bar:
-  #
-  #   module Foo
-  #     def self.included(base)
-  #       # Define some :enhanced_method for Host class
-  #       base.class_eval do
-  #         def self.enhanced_method
-  #           # Do enhanced stuff
-  #         end
-  #       end
-  #     end
-  #   end
+  # But why should +Host+ care about +Bar+'s dependencies, namely +Foo+? We could try to hide
+  # these from +Host+ directly including +Foo+ in +Bar+:
   #
   #   module Bar
   #     include Foo 
   #     def self.included(base)
-  #       base.send(:enhanced_method)
+  #       base.method_injected_by_foo
   #     end
   #   end
   #
@@ -85,8 +75,8 @@ module ActiveSupport
   #     include Bar
   #   end
   #
-  # Unfortunately this won't work, since when Foo is included, its <tt>base</tt> is Bar module, not Host class.
-  # With <tt>ActiveSupport::Concern</tt>, module dependencies are properly resolved:
+  # Unfortunately this won't work, since when +Foo+ is included, its <tt>base</tt> is the +Bar+ module,
+  # not the +Host+ class. With <tt>ActiveSupport::Concern</tt>, module dependencies are properly resolved:
   #
   #   require 'active_support/concern'
   #
@@ -94,8 +84,8 @@ module ActiveSupport
   #     extend ActiveSupport::Concern
   #     included do
   #       class_eval do
-  #         def self.enhanced_method
-  #           # Do enhanced stuff
+  #         def self.method_injected_by_foo
+  #           ...
   #         end
   #       end
   #     end
@@ -106,12 +96,12 @@ module ActiveSupport
   #     include Foo
   #
   #     included do
-  #       self.send(:enhanced_method)
+  #       self.method_injected_by_foo
   #     end
   #   end
   #
   #   class Host
-  #     include Bar # Host only needs to care about Bar without needing to know about its dependencies
+  #     include Bar # works, Bar takes care now of its dependencies
   #   end
   #
   module Concern
-- 
cgit v1.2.3