aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOshoma Momoh <oshoma@mukodu.com>2009-02-09 10:29:15 -0500
committerMichael Koziarski <michael@koziarski.com>2009-02-13 21:40:30 +1300
commita6508527570cd3f7225a7030218447bcc5824224 (patch)
treef892256d5428c1c72cf0ae674ba98e06afd5e875
parent0c956443964a20cbcc122e2d8c429b0cbb121828 (diff)
downloadrails-a6508527570cd3f7225a7030218447bcc5824224.tar.gz
rails-a6508527570cd3f7225a7030218447bcc5824224.tar.bz2
rails-a6508527570cd3f7225a7030218447bcc5824224.zip
Fix loader's LoadError exception message to mention missing plugins and omit loaded plugins.
Prior to this change the LoadError message listed all plugins if any one of them was missing. Signed-off-by: Michael Koziarski <michael@koziarski.com> [#1921 state:committed]
-rw-r--r--railties/lib/rails/plugin/loader.rb2
-rw-r--r--railties/test/initializer_test.rb20
2 files changed, 21 insertions, 1 deletions
diff --git a/railties/lib/rails/plugin/loader.rb b/railties/lib/rails/plugin/loader.rb
index be81bdf4fa..bc0184c43d 100644
--- a/railties/lib/rails/plugin/loader.rb
+++ b/railties/lib/rails/plugin/loader.rb
@@ -175,7 +175,7 @@ module Rails
def ensure_all_registered_plugins_are_loaded!
if explicit_plugin_loading_order?
if configuration.plugins.detect {|plugin| plugin != :all && !loaded?(plugin) }
- missing_plugins = configuration.plugins - (plugins + [:all])
+ missing_plugins = configuration.plugins - (plugins.map{|p| p.name.to_sym} + [:all])
raise LoadError, "Could not locate the following plugins: #{missing_plugins.to_sentence}"
end
end
diff --git a/railties/test/initializer_test.rb b/railties/test/initializer_test.rb
index 39372dc5ab..2ab4101eaf 100644
--- a/railties/test/initializer_test.rb
+++ b/railties/test/initializer_test.rb
@@ -238,6 +238,26 @@ class InitializerPluginLoadingTests < Test::Unit::TestCase
end
end
+ def test_load_error_messages_mention_missing_plugins_and_no_others
+ valid_plugin_names = [:stubby, :acts_as_chunky_bacon]
+ invalid_plugin_names = [:non_existant_plugin1, :non_existant_plugin2]
+ only_load_the_following_plugins!( valid_plugin_names + invalid_plugin_names )
+ begin
+ load_plugins!
+ flunk "Expected a LoadError but did not get one"
+ rescue LoadError => e
+ failure_tip = "It's likely someone renamed or deleted plugin fixtures without updating this test"
+ assert_plugins valid_plugin_names, @initializer.loaded_plugins, failure_tip
+ invalid_plugin_names.each do |plugin|
+ assert_match(/#{plugin.to_s}/, e.message, "LoadError message should mention plugin '#{plugin}'")
+ end
+ valid_plugin_names.each do |plugin|
+ assert_no_match(/#{plugin.to_s}/, e.message, "LoadError message should not mention '#{plugin}'")
+ end
+
+ end
+ end
+
def test_should_ensure_all_loaded_plugins_load_paths_are_added_to_the_load_path
only_load_the_following_plugins! [:stubby, :acts_as_chunky_bacon]