aboutsummaryrefslogtreecommitdiffstats
path: root/railties/lib
diff options
context:
space:
mode:
authorDavid Heinemeier Hansson <david@loudthinking.com>2006-10-17 20:27:03 +0000
committerDavid Heinemeier Hansson <david@loudthinking.com>2006-10-17 20:27:03 +0000
commitc1a52510ea1d20990b047e8b2aa8a7154a931f1b (patch)
treea3310071e09c0b9c8830c8e1756ddb6cd40c3d72 /railties/lib
parent911f3db00abb7b35b400973c032e4e5c340bce6f (diff)
downloadrails-c1a52510ea1d20990b047e8b2aa8a7154a931f1b.tar.gz
rails-c1a52510ea1d20990b047e8b2aa8a7154a931f1b.tar.bz2
rails-c1a52510ea1d20990b047e8b2aa8a7154a931f1b.zip
Added config.plugins to control which plugins are loaded #6269 [skaes]. By default, everything in vendor/plugins will be loaded, but if you specify config.plugins, only those will be loaded.
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@5317 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
Diffstat (limited to 'railties/lib')
-rw-r--r--railties/lib/initializer.rb16
1 files changed, 14 insertions, 2 deletions
diff --git a/railties/lib/initializer.rb b/railties/lib/initializer.rb
index 0275026f41..1400930768 100644
--- a/railties/lib/initializer.rb
+++ b/railties/lib/initializer.rb
@@ -322,7 +322,7 @@ module Rails
base_paths.flatten.inject([]) do |plugins, base_path|
Dir.glob(File.join(base_path, '*')).each do |path|
if plugin_path?(path)
- plugins << path
+ plugins << path if plugin_enabled?(path)
elsif File.directory?(path)
plugins += find_plugins(path)
end
@@ -335,6 +335,10 @@ module Rails
File.directory?(path) and (File.directory?(File.join(path, 'lib')) or File.file?(File.join(path, 'init.rb')))
end
+ def plugin_enabled?(path)
+ configuration.plugins.empty? || configuration.plugins.include?(File.basename(path))
+ end
+
# Load the plugin at <tt>path</tt> unless already loaded.
#
# Each plugin is initialized:
@@ -456,6 +460,9 @@ module Rails
# Set to +true+ if you want to be warned (noisily) when you try to invoke
# any method of +nil+. Set to +false+ for the standard Ruby behavior.
attr_accessor :whiny_nils
+
+ # The list of plugins to load. If this is set to <tt>[]</tt>, all plugins will be loaded.
+ attr_accessor :plugins
# The path to the root of the plugins directory. By default, it is in
# <tt>vendor/plugins</tt>.
@@ -474,6 +481,7 @@ module Rails
self.cache_classes = default_cache_classes
self.breakpoint_server = default_breakpoint_server
self.whiny_nils = default_whiny_nils
+ self.plugins = default_plugins
self.plugin_paths = default_plugin_paths
self.database_configuration_file = default_database_configuration_file
@@ -624,6 +632,10 @@ module Rails
false
end
+ def default_plugins
+ []
+ end
+
def default_plugin_paths
["#{root_path}/vendor/plugins"]
end
@@ -663,4 +675,4 @@ class Rails::OrderedOptions < Array #:nodoc:
self.each { |i| return i if i.first == key }
return false
end
-end \ No newline at end of file
+end