aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--railties/lib/initializer.rb11
-rw-r--r--railties/lib/plugin/locator.rb16
-rw-r--r--railties/test/plugin_locator_test.rb16
3 files changed, 19 insertions, 24 deletions
diff --git a/railties/lib/initializer.rb b/railties/lib/initializer.rb
index 36797026c4..4e4e260056 100644
--- a/railties/lib/initializer.rb
+++ b/railties/lib/initializer.rb
@@ -192,6 +192,7 @@ module Rails
plugin.load
end
end
+ ensure_all_registered_plugins_are_loaded!
$LOAD_PATH.uniq!
end
@@ -339,6 +340,16 @@ module Rails
load(initializer)
end
end
+
+ private
+ def ensure_all_registered_plugins_are_loaded!
+ unless configuration.plugins.nil?
+ unless loaded_plugins == configuration.plugins
+ missing_plugins = configuration.plugins - loaded_plugins
+ raise LoadError, "Could not locate the following plugins: #{missing_plugins.to_sentence}"
+ end
+ end
+ end
end
# The Configuration class holds all the parameters for the Initializer and
diff --git a/railties/lib/plugin/locator.rb b/railties/lib/plugin/locator.rb
index 2e3b34cee6..6c4f2605bb 100644
--- a/railties/lib/plugin/locator.rb
+++ b/railties/lib/plugin/locator.rb
@@ -29,27 +29,11 @@ module Rails
class FileSystemLocator < Locator
private
def located_plugins
- returning locate_plugins do |loaders|
- ensure_all_registered_plugins_are_loaded!(loaders)
- end
- end
-
- def locate_plugins
initializer.configuration.plugin_paths.flatten.inject([]) do |plugins, path|
plugins.concat locate_plugins_under(path)
plugins
end.flatten
end
-
- def ensure_all_registered_plugins_are_loaded!(loaders)
- registered_plugins = initializer.configuration.plugins
- unless registered_plugins.nil? || registered_plugins.empty?
- missing_plugins = registered_plugins - loaders.map(&:name)
- unless missing_plugins.empty?
- raise LoadError, "Could not locate the following plugins: #{missing_plugins.to_sentence}"
- end
- end
- end
# This starts at the base path looking for directories that pass the plugin_path? test of the Plugin::Loader.
# Since plugins can be nested arbitrarily deep within an unspecified number of intermediary directories,
diff --git a/railties/test/plugin_locator_test.rb b/railties/test/plugin_locator_test.rb
index 5ea89844d0..36f9e272e4 100644
--- a/railties/test/plugin_locator_test.rb
+++ b/railties/test/plugin_locator_test.rb
@@ -21,21 +21,21 @@ class TestPluginFileSystemLocator < Test::Unit::TestCase
assert_equal plugin_names, @locator.plugin_names
end
+ def test_all_plugins_are_loaded_when_registered_plugin_list_is_untouched
+ failure_tip = "It's likely someone has added a new plugin fixture without updating this list"
+ assert_equal %w(a acts_as_chunky_bacon plugin_with_no_lib_dir stubby), @locator.plugin_names, failure_tip
+ end
+
+
def test_registering_a_plugin_name_that_does_not_exist_raises_a_load_error
only_load_the_following_plugins! %w(stubby acts_as_a_non_existant_plugin)
assert_raises(LoadError) do
- @locator.plugins
+ @initializer.load_plugins
end
end
- def test_all_plugins_are_loaded_when_registered_plugin_list_is_untouched
- failure_tip = "It's likely someone has added a new plugin fixture without updating this list"
- assert_equal %w(a acts_as_chunky_bacon plugin_with_no_lib_dir stubby), @locator.plugin_names, failure_tip
- end
-
private
def new_locator(initializer = @initializer)
Rails::Plugin::FileSystemLocator.new(initializer)
- end
-
+ end
end \ No newline at end of file