提交 9adaec4b 编写于 作者: C Charlie Somerville

fix source_index related shit

上级 c799732c
......@@ -4,6 +4,12 @@ module Gem
def self.source_index
Gem::Specification
end
def self.source_index_search(dep)
Gem::Specification.select { |spec|
dep.matches_spec?(spec)
}
end
end
module Rails
......@@ -101,7 +107,7 @@ def specification
# code repeated from Gem.activate. Find a matching spec, or the currently loaded version.
# error out if loaded version and requested version are incompatible.
@spec ||= begin
matches = Gem.source_index.search(self)
matches = Gem.source_index_search(self)
matches << @@framework_gems[name] if framework_gem?
if Gem.loaded_specs[name] then
# This gem is already loaded. If the currently loaded gem is not in the
......
......@@ -209,7 +209,7 @@ class GemGeneratorSource < AbstractGemSource
# Yield latest versions of generator gems.
def each
dependency = Gem::Dependency.new(/_generator$/, Gem::Requirement.default)
Gem.source_index.search(dependency).inject({}) { |latest, gem|
Gem.source_index_search(dependency).inject({}) { |latest, gem|
hem = latest[gem.name]
latest[gem.name] = gem if hem.nil? or gem.version > hem.version
latest
......@@ -231,17 +231,14 @@ def each
private
def generator_full_paths
@generator_full_paths ||=
Gem.source_index.inject({}) do |latest, name_gem|
name, gem = name_gem
hem = latest[gem.name]
latest[gem.name] = gem if hem.nil? or gem.version > hem.version
latest
end.values.inject([]) do |mem, gem|
Gem::Specification.each_with_object({}) { |g, latest|
hem = latest[g.name]
latest[g.name] = g if hem.nil? or g.version > hem.version
}.values.each_with_object([]) { |gem, mem|
Dir[gem.full_gem_path + '/{rails_,}generators/**/*_generator.rb'].each do |generator|
mem << generator
end
mem
end
}
end
end
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册