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