aboutsummaryrefslogtreecommitdiffstats
path: root/railties/test/initializable_test.rb
diff options
context:
space:
mode:
Diffstat (limited to 'railties/test/initializable_test.rb')
-rw-r--r--railties/test/initializable_test.rb43
1 files changed, 41 insertions, 2 deletions
diff --git a/railties/test/initializable_test.rb b/railties/test/initializable_test.rb
index 0c7378cb64..6a7e4dcc25 100644
--- a/railties/test/initializable_test.rb
+++ b/railties/test/initializable_test.rb
@@ -50,7 +50,7 @@ module InitializableTests
$arr << 3
end
- initializer :four, :after => :one do
+ initializer :four, :after => :one, :before => :two do
$arr << 4
end
end
@@ -97,7 +97,7 @@ module InitializableTests
$arr << 3
end
- initializer :terminate, :after => :first do
+ initializer :terminate, :after => :first, :before => :startup do
$arr << two
end
@@ -121,6 +121,39 @@ module InitializableTests
end
end
+ module Interdependent
+ class PluginA
+ include Rails::Initializable
+
+ initializer "plugin_a.startup" do
+ $arr << 1
+ end
+
+ initializer "plugin_a.terminate" do
+ $arr << 4
+ end
+ end
+
+ class PluginB
+ include Rails::Initializable
+
+ initializer "plugin_b.startup", :after => "plugin_a.startup" do
+ $arr << 2
+ end
+
+ initializer "plugin_b.terminate", :before => "plugin_a.terminate" do
+ $arr << 3
+ end
+ end
+
+ class Application
+ include Rails::Initializable
+ def self.initializers
+ PluginB.initializers + PluginA.initializers
+ end
+ end
+ end
+
class Basic < ActiveSupport::TestCase
include ActiveSupport::Testing::Isolation
@@ -174,6 +207,12 @@ module InitializableTests
Child.run_initializers
assert_equal [5, 3, 1, 4, 2], $arr
end
+
+ test "handles dependencies introduced before all initializers are loaded" do
+ $arr = []
+ Interdependent::Application.run_initializers
+ assert_equal [1, 2, 3, 4], $arr
+ end
end
class InstanceTest < ActiveSupport::TestCase