aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport/lib/active_support/concern.rb
diff options
context:
space:
mode:
Diffstat (limited to 'activesupport/lib/active_support/concern.rb')
-rw-r--r--activesupport/lib/active_support/concern.rb16
1 files changed, 10 insertions, 6 deletions
diff --git a/activesupport/lib/active_support/concern.rb b/activesupport/lib/active_support/concern.rb
index dcf1e8152f..eb31f7cad4 100644
--- a/activesupport/lib/active_support/concern.rb
+++ b/activesupport/lib/active_support/concern.rb
@@ -1,11 +1,17 @@
-require 'active_support/dependency_module'
-
module ActiveSupport
module Concern
- include DependencyModule
+ def self.extended(base)
+ base.instance_variable_set("@_dependencies", [])
+ end
def append_features(base)
- if super
+ if base.instance_variable_defined?("@_dependencies")
+ base.instance_variable_get("@_dependencies") << self
+ return false
+ else
+ return false if base < self
+ @_dependencies.each { |dep| base.send(:include, dep) }
+ super
base.extend const_get("ClassMethods") if const_defined?("ClassMethods")
base.send :include, const_get("InstanceMethods") if const_defined?("InstanceMethods")
base.class_eval(&@_included_block) if instance_variable_defined?("@_included_block")
@@ -19,7 +25,5 @@ module ActiveSupport
super
end
end
-
- alias_method :include, :depends_on
end
end