From 53dfdbc88ef3f21c487405328463e10f7238f3e7 Mon Sep 17 00:00:00 2001 From: Antonio Terceiro Date: Sat, 25 Aug 2012 13:51:28 -0300 Subject: [PATCH] Mechanism for specifying plugin dependencies --- lib/noosfero/plugin.rb | 27 +++++++++++++++++++++------ plugins/mezuro/dependencies.rb | 1 + plugins/mezuro/lib/mezuro_plugin.rb | 1 - 3 files changed, 22 insertions(+), 7 deletions(-) create mode 100644 plugins/mezuro/dependencies.rb diff --git a/lib/noosfero/plugin.rb b/lib/noosfero/plugin.rb index 4da5cf4..f679eb0 100644 --- a/lib/noosfero/plugin.rb +++ b/lib/noosfero/plugin.rb @@ -15,14 +15,29 @@ class Noosfero::Plugin Dir.glob(File.join(Rails.root, 'config', 'plugins', '*')).select do |entry| File.directory?(entry) end.each do |dir| - Rails.configuration.controller_paths << File.join(dir, 'controllers') - ActiveSupport::Dependencies.load_paths << File.join(dir, 'controllers') - [ ActiveSupport::Dependencies.load_paths, $:].each do |path| - path << File.join(dir, 'models') - path << File.join(dir, 'lib') + plugin_name = File.basename(dir) + + plugin_dependencies_ok = true + plugin_dependencies_file = File.join(dir, 'dependencies.rb') + if File.exists?(plugin_dependencies_file) + begin + require plugin_dependencies_file + rescue LoadError => ex + plugin_dependencies_ok = false + $stderr.puts "W: Noosfero plugin #{plugin_name} failed to load (#{ex})" + end end - klass(File.basename(dir)) + if plugin_dependencies_ok + Rails.configuration.controller_paths << File.join(dir, 'controllers') + ActiveSupport::Dependencies.load_paths << File.join(dir, 'controllers') + [ ActiveSupport::Dependencies.load_paths, $:].each do |path| + path << File.join(dir, 'models') + path << File.join(dir, 'lib') + end + + klass(plugin_name) + end end end diff --git a/plugins/mezuro/dependencies.rb b/plugins/mezuro/dependencies.rb new file mode 100644 index 0000000..bf8cc16 --- /dev/null +++ b/plugins/mezuro/dependencies.rb @@ -0,0 +1 @@ +require 'savon' diff --git a/plugins/mezuro/lib/mezuro_plugin.rb b/plugins/mezuro/lib/mezuro_plugin.rb index 59c7b78..cf7c808 100644 --- a/plugins/mezuro/lib/mezuro_plugin.rb +++ b/plugins/mezuro/lib/mezuro_plugin.rb @@ -1,4 +1,3 @@ -require 'savon' require 'yaml' Savon.configure do |config| -- libgit2 0.21.2