Commit 53dfdbc88ef3f21c487405328463e10f7238f3e7

Authored by Antonio Terceiro
1 parent 1b94cf38

Mechanism for specifying plugin dependencies

lib/noosfero/plugin.rb
@@ -15,14 +15,29 @@ class Noosfero::Plugin @@ -15,14 +15,29 @@ class Noosfero::Plugin
15 Dir.glob(File.join(Rails.root, 'config', 'plugins', '*')).select do |entry| 15 Dir.glob(File.join(Rails.root, 'config', 'plugins', '*')).select do |entry|
16 File.directory?(entry) 16 File.directory?(entry)
17 end.each do |dir| 17 end.each do |dir|
18 - Rails.configuration.controller_paths << File.join(dir, 'controllers')  
19 - ActiveSupport::Dependencies.load_paths << File.join(dir, 'controllers')  
20 - [ ActiveSupport::Dependencies.load_paths, $:].each do |path|  
21 - path << File.join(dir, 'models')  
22 - path << File.join(dir, 'lib') 18 + plugin_name = File.basename(dir)
  19 +
  20 + plugin_dependencies_ok = true
  21 + plugin_dependencies_file = File.join(dir, 'dependencies.rb')
  22 + if File.exists?(plugin_dependencies_file)
  23 + begin
  24 + require plugin_dependencies_file
  25 + rescue LoadError => ex
  26 + plugin_dependencies_ok = false
  27 + $stderr.puts "W: Noosfero plugin #{plugin_name} failed to load (#{ex})"
  28 + end
23 end 29 end
24 30
25 - klass(File.basename(dir)) 31 + if plugin_dependencies_ok
  32 + Rails.configuration.controller_paths << File.join(dir, 'controllers')
  33 + ActiveSupport::Dependencies.load_paths << File.join(dir, 'controllers')
  34 + [ ActiveSupport::Dependencies.load_paths, $:].each do |path|
  35 + path << File.join(dir, 'models')
  36 + path << File.join(dir, 'lib')
  37 + end
  38 +
  39 + klass(plugin_name)
  40 + end
26 end 41 end
27 end 42 end
28 43
plugins/mezuro/dependencies.rb 0 → 100644
@@ -0,0 +1 @@ @@ -0,0 +1 @@
  1 +require 'savon'
plugins/mezuro/lib/mezuro_plugin.rb
1 -require 'savon'  
2 require 'yaml' 1 require 'yaml'
3 2
4 Savon.configure do |config| 3 Savon.configure do |config|