diff options
author | Sven Fuchs <svenfuchs@artweb-design.de> | 2009-02-22 10:39:56 -0600 |
---|---|---|
committer | Joshua Peek <josh@joshpeek.com> | 2009-02-22 10:39:56 -0600 |
commit | 441e4e22352c8805a882f6a661ab3982dd7eda12 (patch) | |
tree | dfd135c9c4012724282fe8c2466dfb5bdc9d95d7 /railties/lib/rails | |
parent | ff1afbd65098643a06eef928f92fecf6e9d548b2 (diff) | |
download | rails-441e4e22352c8805a882f6a661ab3982dd7eda12.tar.gz rails-441e4e22352c8805a882f6a661ab3982dd7eda12.tar.bz2 rails-441e4e22352c8805a882f6a661ab3982dd7eda12.zip |
load plugin view_paths to action_mailer view_paths and make action_mailer use them [#2031 state:resolved]
Signed-off-by: Joshua Peek <josh@joshpeek.com>
Diffstat (limited to 'railties/lib/rails')
-rw-r--r-- | railties/lib/rails/plugin/loader.rb | 50 |
1 files changed, 26 insertions, 24 deletions
diff --git a/railties/lib/rails/plugin/loader.rb b/railties/lib/rails/plugin/loader.rb index bc0184c43d..7f85bb8966 100644 --- a/railties/lib/rails/plugin/loader.rb +++ b/railties/lib/rails/plugin/loader.rb @@ -16,7 +16,7 @@ module Rails def initialize(initializer) @initializer = initializer end - + # Returns the plugins to be loaded, in the order they should be loaded. def plugins @plugins ||= all_plugins.select { |plugin| should_load?(plugin) }.sort { |p1, p2| order_plugins(p1, p2) } @@ -32,9 +32,9 @@ module Rails @all_plugins ||= locate_plugins @all_plugins end - + def load_plugins - plugins.each do |plugin| + plugins.each do |plugin| plugin.load(initializer) register_plugin_as_loaded(plugin) end @@ -43,12 +43,12 @@ module Rails ensure_all_registered_plugins_are_loaded! end - + # Adds the load paths for every plugin into the $LOAD_PATH. Plugin load paths are # added *after* the application's <tt>lib</tt> directory, to ensure that an application # can always override code within a plugin. # - # Plugin load paths are also added to Dependencies.load_paths, and Dependencies.load_once_paths. + # Plugin load paths are also added to Dependencies.load_paths, and Dependencies.load_once_paths. def add_plugin_load_paths plugins.each do |plugin| plugin.load_paths.each do |path| @@ -56,7 +56,7 @@ module Rails ActiveSupport::Dependencies.load_paths << path - unless Rails.configuration.reload_plugins? + unless configuration.reload_plugins? ActiveSupport::Dependencies.load_once_paths << path end end @@ -64,8 +64,8 @@ module Rails $LOAD_PATH.uniq! end - - + + protected def configure_engines if engines.any? @@ -74,20 +74,22 @@ module Rails add_engine_view_paths end end - + def add_engine_routing_configurations engines.select(&:routed?).collect(&:routing_file).each do |routing_file| ActionController::Routing::Routes.add_configuration_file(routing_file) end end - + def add_engine_controller_paths ActionController::Routing.controller_paths += engines.collect(&:controller_path) end - + def add_engine_view_paths # reverse it such that the last engine can overwrite view paths from the first, like with routes - ActionController::Base.view_paths += ActionView::PathSet.new(engines.collect(&:view_path).reverse) + paths = ActionView::PathSet.new(engines.collect(&:view_path).reverse) + ActionController::Base.view_paths.concat(paths) + ActionMailer::Base.view_paths.concat(paths) if configuration.frameworks.include?(:action_mailer) end # The locate_plugins method uses each class in config.plugin_locators to @@ -106,7 +108,7 @@ module Rails def configuration initializer.configuration end - + def should_load?(plugin) # uses Plugin#name and Plugin#valid? enabled?(plugin) && plugin.valid? @@ -120,21 +122,21 @@ module Rails plugin_a <=> plugin_b else effective_order_of(plugin_a) <=> effective_order_of(plugin_b) - end + end end end - + def effective_order_of(plugin) if explicitly_enabled?(plugin) - registered_plugin_names.index(plugin.name) + registered_plugin_names.index(plugin.name) else registered_plugin_names.index('all') - end + end end def application_lib_index $LOAD_PATH.index(File.join(RAILS_ROOT, 'lib')) || 0 - end + end def enabled?(plugin) !explicit_plugin_loading_order? || registered?(plugin) @@ -155,23 +157,23 @@ module Rails def explicitly_registered?(plugin) explicit_plugin_loading_order? && registered_plugin_names.include?(plugin.name) end - + def registered_plugins_names_plugin?(plugin) registered_plugin_names.include?(plugin.name) || registered_plugin_names.include?('all') end - + # The plugins that have been explicitly listed with config.plugins. If this list is nil - # then it means the client does not care which plugins or in what order they are loaded, + # then it means the client does not care which plugins or in what order they are loaded, # so we load all in alphabetical order. If it is an empty array, we load no plugins, if it is # non empty, we load the named plugins in the order specified. def registered_plugin_names configuration.plugins ? configuration.plugins.map(&:to_s) : nil end - + def loaded?(plugin_name) initializer.loaded_plugins.detect { |plugin| plugin.name == plugin_name.to_s } end - + def ensure_all_registered_plugins_are_loaded! if explicit_plugin_loading_order? if configuration.plugins.detect {|plugin| plugin != :all && !loaded?(plugin) } @@ -180,7 +182,7 @@ module Rails end end end - + end end end
\ No newline at end of file |