aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoshua Peek <josh@joshpeek.com>2009-05-07 10:29:22 -0500
committerJoshua Peek <josh@joshpeek.com>2009-05-07 10:29:22 -0500
commit2854535b02bcee3668bda02c76c3105fc24730d3 (patch)
treeb78660942bdc6f532a1109da57ee40d7d31cf603
parent783deae99a4850f597135146b19e7ee4622da94e (diff)
downloadrails-2854535b02bcee3668bda02c76c3105fc24730d3.tar.gz
rails-2854535b02bcee3668bda02c76c3105fc24730d3.tar.bz2
rails-2854535b02bcee3668bda02c76c3105fc24730d3.zip
Make module dependency DSL opt in
-rw-r--r--actionpack/lib/action_controller/abstract/helpers.rb2
-rw-r--r--actionpack/lib/action_controller/abstract/layouts.rb5
-rw-r--r--actionpack/lib/action_controller/abstract/logger.rb2
-rw-r--r--actionpack/lib/action_controller/abstract/renderer.rb2
-rw-r--r--actionpack/lib/action_controller/new_base/layouts.rb2
-rw-r--r--actionpack/lib/action_controller/new_base/renderer.rb2
-rw-r--r--actionpack/test/abstract_controller/callbacks_test.rb2
-rw-r--r--actionpack/test/abstract_controller/layouts_test.rb6
-rw-r--r--actionpack/test/new_base/test_helper.rb14
-rw-r--r--activesupport/lib/active_support.rb1
-rw-r--r--activesupport/lib/active_support/core_ext/module.rb1
-rw-r--r--activesupport/lib/active_support/core_ext/module/setup.rb26
-rw-r--r--activesupport/lib/active_support/dependency_module.rb24
-rw-r--r--activesupport/test/dependency_module_test.rb (renamed from activesupport/test/core_ext/module/setup_test.rb)27
14 files changed, 64 insertions, 52 deletions
diff --git a/actionpack/lib/action_controller/abstract/helpers.rb b/actionpack/lib/action_controller/abstract/helpers.rb
index 1f0b38417b..ffcae29ddc 100644
--- a/actionpack/lib/action_controller/abstract/helpers.rb
+++ b/actionpack/lib/action_controller/abstract/helpers.rb
@@ -1,5 +1,7 @@
module AbstractController
module Helpers
+ extend ActiveSupport::DependencyModule
+
depends_on Renderer
setup do
diff --git a/actionpack/lib/action_controller/abstract/layouts.rb b/actionpack/lib/action_controller/abstract/layouts.rb
index 0039e67c5a..76130f8dc0 100644
--- a/actionpack/lib/action_controller/abstract/layouts.rb
+++ b/actionpack/lib/action_controller/abstract/layouts.rb
@@ -1,8 +1,9 @@
module AbstractController
module Layouts
-
+ extend ActiveSupport::DependencyModule
+
depends_on Renderer
-
+
module ClassMethods
def layout(layout)
unless [String, Symbol, FalseClass, NilClass].include?(layout.class)
diff --git a/actionpack/lib/action_controller/abstract/logger.rb b/actionpack/lib/action_controller/abstract/logger.rb
index 4117369bd4..bdb8defa0c 100644
--- a/actionpack/lib/action_controller/abstract/logger.rb
+++ b/actionpack/lib/action_controller/abstract/logger.rb
@@ -1,5 +1,7 @@
module AbstractController
module Logger
+ extend ActiveSupport::DependencyModule
+
setup do
cattr_accessor :logger
end
diff --git a/actionpack/lib/action_controller/abstract/renderer.rb b/actionpack/lib/action_controller/abstract/renderer.rb
index e31accbbfc..531eb28dcb 100644
--- a/actionpack/lib/action_controller/abstract/renderer.rb
+++ b/actionpack/lib/action_controller/abstract/renderer.rb
@@ -2,6 +2,8 @@ require "action_controller/abstract/logger"
module AbstractController
module Renderer
+ extend ActiveSupport::DependencyModule
+
depends_on AbstractController::Logger
setup do
diff --git a/actionpack/lib/action_controller/new_base/layouts.rb b/actionpack/lib/action_controller/new_base/layouts.rb
index a8e0809ac6..89d24fe92d 100644
--- a/actionpack/lib/action_controller/new_base/layouts.rb
+++ b/actionpack/lib/action_controller/new_base/layouts.rb
@@ -1,5 +1,7 @@
module ActionController
module Layouts
+ extend ActiveSupport::DependencyModule
+
depends_on ActionController::Renderer
depends_on AbstractController::Layouts
diff --git a/actionpack/lib/action_controller/new_base/renderer.rb b/actionpack/lib/action_controller/new_base/renderer.rb
index ed34c46aed..be4ea54c3b 100644
--- a/actionpack/lib/action_controller/new_base/renderer.rb
+++ b/actionpack/lib/action_controller/new_base/renderer.rb
@@ -1,5 +1,7 @@
module ActionController
module Renderer
+ extend ActiveSupport::DependencyModule
+
depends_on AbstractController::Renderer
def initialize(*)
diff --git a/actionpack/test/abstract_controller/callbacks_test.rb b/actionpack/test/abstract_controller/callbacks_test.rb
index 5fce30f478..89243b631e 100644
--- a/actionpack/test/abstract_controller/callbacks_test.rb
+++ b/actionpack/test/abstract_controller/callbacks_test.rb
@@ -4,7 +4,7 @@ module AbstractController
module Testing
class ControllerWithCallbacks < AbstractController::Base
- use AbstractController::Callbacks
+ include AbstractController::Callbacks
end
class Callback1 < ControllerWithCallbacks
diff --git a/actionpack/test/abstract_controller/layouts_test.rb b/actionpack/test/abstract_controller/layouts_test.rb
index 3d4570bfef..a305a30a54 100644
--- a/actionpack/test/abstract_controller/layouts_test.rb
+++ b/actionpack/test/abstract_controller/layouts_test.rb
@@ -5,9 +5,9 @@ module AbstractControllerTests
# Base controller for these tests
class Base < AbstractController::Base
- use AbstractController::Renderer
- use AbstractController::Layouts
-
+ include AbstractController::Renderer
+ include AbstractController::Layouts
+
self.view_paths = [ActionView::FixtureTemplate::FixturePath.new(
"layouts/hello.erb" => "With String <%= yield %>",
"layouts/hello_override.erb" => "With Override <%= yield %>",
diff --git a/actionpack/test/new_base/test_helper.rb b/actionpack/test/new_base/test_helper.rb
index d29449ddc1..89c29d9af3 100644
--- a/actionpack/test/new_base/test_helper.rb
+++ b/actionpack/test/new_base/test_helper.rb
@@ -26,14 +26,14 @@ require 'rack/test'
module ActionController
class Base2 < AbstractBase
- use AbstractController::Callbacks
- use AbstractController::Helpers
- use AbstractController::Logger
+ include AbstractController::Callbacks
+ include AbstractController::Helpers
+ include AbstractController::Logger
- use ActionController::HideActions
- use ActionController::UrlFor
- use ActionController::Renderer
- use ActionController::Layouts
+ include ActionController::HideActions
+ include ActionController::UrlFor
+ include ActionController::Renderer
+ include ActionController::Layouts
def self.inherited(klass)
::ActionController::Base2.subclasses << klass.to_s
diff --git a/activesupport/lib/active_support.rb b/activesupport/lib/active_support.rb
index 0879535487..dab017770d 100644
--- a/activesupport/lib/active_support.rb
+++ b/activesupport/lib/active_support.rb
@@ -34,6 +34,7 @@ module ActiveSupport
autoload :Callbacks, 'active_support/callbacks'
autoload :NewCallbacks, 'active_support/new_callbacks'
autoload :ConcurrentHash, 'active_support/concurrent_hash'
+ autoload :DependencyModule, 'active_support/dependency_module'
autoload :Deprecation, 'active_support/deprecation'
autoload :Gzip, 'active_support/gzip'
autoload :Inflector, 'active_support/inflector'
diff --git a/activesupport/lib/active_support/core_ext/module.rb b/activesupport/lib/active_support/core_ext/module.rb
index fee91534e7..215c47b114 100644
--- a/activesupport/lib/active_support/core_ext/module.rb
+++ b/activesupport/lib/active_support/core_ext/module.rb
@@ -9,4 +9,3 @@ require 'active_support/core_ext/module/delegation'
require 'active_support/core_ext/module/loading'
require 'active_support/core_ext/module/model_naming'
require 'active_support/core_ext/module/synchronization'
-require 'active_support/core_ext/module/setup'
diff --git a/activesupport/lib/active_support/core_ext/module/setup.rb b/activesupport/lib/active_support/core_ext/module/setup.rb
deleted file mode 100644
index e6dfd0cf56..0000000000
--- a/activesupport/lib/active_support/core_ext/module/setup.rb
+++ /dev/null
@@ -1,26 +0,0 @@
-class Module
- attr_accessor :_setup_block
- attr_accessor :_dependencies
-
- def setup(&blk)
- @_setup_block = blk
- end
-
- def use(mod)
- return if self < mod
-
- (mod._dependencies || []).each do |dep|
- use dep
- end
- # raise "Circular dependencies" if self < mod
- include mod
- extend mod.const_get("ClassMethods") if mod.const_defined?("ClassMethods")
- class_eval(&mod._setup_block) if mod._setup_block
- end
-
- def depends_on(mod)
- return if self < mod
- @_dependencies ||= []
- @_dependencies << mod
- end
-end \ No newline at end of file
diff --git a/activesupport/lib/active_support/dependency_module.rb b/activesupport/lib/active_support/dependency_module.rb
new file mode 100644
index 0000000000..0e1cc67b53
--- /dev/null
+++ b/activesupport/lib/active_support/dependency_module.rb
@@ -0,0 +1,24 @@
+module ActiveSupport
+ module DependencyModule
+ def setup(&blk)
+ @_setup_block = blk
+ end
+
+ def append_features(base)
+ return if base < self
+ (@_dependencies ||= []).each { |dep| base.send(:include, dep) }
+ super
+ end
+
+ def included(base)
+ base.extend const_get("ClassMethods") if const_defined?("ClassMethods")
+ base.class_eval(&@_setup_block) if instance_variable_defined?("@_setup_block")
+ end
+
+ def depends_on(mod)
+ return if self < mod
+ @_dependencies ||= []
+ @_dependencies << mod
+ end
+ end
+end
diff --git a/activesupport/test/core_ext/module/setup_test.rb b/activesupport/test/dependency_module_test.rb
index 132790f2ff..d611b4056c 100644
--- a/activesupport/test/core_ext/module/setup_test.rb
+++ b/activesupport/test/dependency_module_test.rb
@@ -1,9 +1,10 @@
require 'abstract_unit'
-require 'active_support/core/time'
-require 'active_support/core_ext/module/setup'
+require 'active_support/dependency_module'
-class SetupTest < Test::Unit::TestCase
+class DependencyModuleTest < Test::Unit::TestCase
module Baz
+ extend ActiveSupport::DependencyModule
+
module ClassMethods
def baz
"baz"
@@ -28,6 +29,8 @@ class SetupTest < Test::Unit::TestCase
end
module Bar
+ extend ActiveSupport::DependencyModule
+
depends_on Baz
def bar
@@ -44,31 +47,31 @@ class SetupTest < Test::Unit::TestCase
end
def test_module_is_included_normally
- @klass.use(Baz)
+ @klass.send(:include, Baz)
assert_equal "baz", @klass.new.baz
- assert_equal SetupTest::Baz, @klass.included_modules[0]
+ assert_equal DependencyModuleTest::Baz, @klass.included_modules[0]
- @klass.use(Baz)
+ @klass.send(:include, Baz)
assert_equal "baz", @klass.new.baz
- assert_equal SetupTest::Baz, @klass.included_modules[0]
+ assert_equal DependencyModuleTest::Baz, @klass.included_modules[0]
end
def test_class_methods_are_extended
- @klass.use(Baz)
+ @klass.send(:include, Baz)
assert_equal "baz", @klass.baz
- assert_equal SetupTest::Baz::ClassMethods, (class << @klass; self.included_modules; end)[0]
+ assert_equal DependencyModuleTest::Baz::ClassMethods, (class << @klass; self.included_modules; end)[0]
end
def test_setup_block_is_ran
- @klass.use(Baz)
+ @klass.send(:include, Baz)
assert_equal true, @klass.setup
end
def test_modules_dependencies_are_met
- @klass.use(Bar)
+ @klass.send(:include, Bar)
assert_equal "bar", @klass.new.bar
assert_equal "bar+baz", @klass.new.baz
assert_equal "baz", @klass.baz
- assert_equal [SetupTest::Bar, SetupTest::Baz], @klass.included_modules[0..1]
+ assert_equal [DependencyModuleTest::Bar, DependencyModuleTest::Baz], @klass.included_modules[0..1]
end
end