107: def load(needs = {})
108: sdir = File.join(Gem.dir, "specifications")
109: gems = Gem::SourceIndex.from_installed_gems(sdir)
110: needs = needs.merge({"gem_plugin" => INCLUDE})
111:
112: gems.each do |path, gem|
113:
114: next if @gems.has_key? gem.name
115: check = needs.dup
116:
117:
118: gem.dependencies.each do |dep|
119:
120: if check.has_key? dep.name
121: check[dep.name] = !check[dep.name]
122: end
123: end
124:
125:
126:
127: if (check.select {|name,test| !test}).length == 0
128:
129: gem_dir = File.join(Gem.dir, "gems", "#{gem.name}-#{gem.version}")
130: require File.join(gem_dir, "lib", gem.name, "init.rb")
131: @gems[gem.name] = gem_dir
132: end
133: end
134:
135: return nil
136: end