def load(needs = {})
gems = Gem::SourceIndex.from_installed_gems
needs = needs.merge({"gem_plugin" => INCLUDE})
Dir.glob(File.join(SITE_GEMPLUGINS, "*.gemspec")).each do |file_name|
gemspec = Gem::SourceIndex.load_specification(file_name.untaint)
if gemspec
class << gemspec
def full_gem_path
File.join(File::dirname(@loaded_from), name)
end
def full_init_path
File.join(Config::CONFIG['rubylibdir'], name, "init.rb")
end
end
gems.add_spec(gemspec)
end
end
gems.each do |path, gem|
next if @gems.has_key? gem.name
check = needs.dup
gem.dependencies.each do |dep|
if check.has_key? dep.name
check[dep.name] = !check[dep.name]
end
end
if (check.select {|name,test| !test}).length == 0
gem_dir = gem.full_gem_path
if gem.respond_to?("full_init_path")
require gem.full_init_path
else
require File.join(gem_dir, "lib", gem.name, "init.rb")
end
@gems[gem.name] = gem_dir
end
end
return nil
end