summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/bundler/index.rb22
-rw-r--r--lib/bundler/resolver.rb6
2 files changed, 13 insertions, 15 deletions
diff --git a/lib/bundler/index.rb b/lib/bundler/index.rb
index 5bc24fc0b2..00c7a9e00d 100644
--- a/lib/bundler/index.rb
+++ b/lib/bundler/index.rb
@@ -56,17 +56,17 @@ module Bundler
# Search this index's specs, and any source indexes that this index knows
# about, returning all of the results.
- def search(query, base = nil)
- sort_specs(unsorted_search(query, base))
+ def search(query)
+ sort_specs(unsorted_search(query))
end
- def unsorted_search(query, base)
- results = local_search(query, base)
+ def unsorted_search(query)
+ results = local_search(query)
seen = results.map(&:full_name).uniq unless @sources.empty?
@sources.each do |source|
- source.unsorted_search(query, base).each do |spec|
+ source.unsorted_search(query).each do |spec|
next if seen.include?(spec.full_name)
seen << spec.full_name
@@ -89,12 +89,12 @@ module Bundler
self.class.sort_specs(specs)
end
- def local_search(query, base = nil)
+ def local_search(query)
case query
when Gem::Specification, RemoteSpecification, LazySpecification, EndpointSpecification then search_by_spec(query)
when String then specs_by_name(query)
- when Gem::Dependency then search_by_dependency(query, base)
- when DepProxy then search_by_dependency(query.dep, base)
+ when Gem::Dependency then search_by_dependency(query)
+ when DepProxy then search_by_dependency(query.dep)
else
raise "You can't search for a #{query.inspect}."
end
@@ -185,11 +185,9 @@ module Bundler
@specs[name].values
end
- def search_by_dependency(dependency, base = nil)
- @cache[base || false] ||= {}
- @cache[base || false][dependency] ||= begin
+ def search_by_dependency(dependency)
+ @cache[dependency] ||= begin
specs = specs_by_name(dependency.name)
- specs += base if base
found = specs.select do |spec|
next true if spec.source.is_a?(Source::Gemspec)
dependency.matches_spec?(spec)
diff --git a/lib/bundler/resolver.rb b/lib/bundler/resolver.rb
index 33f232e184..40bc247b32 100644
--- a/lib/bundler/resolver.rb
+++ b/lib/bundler/resolver.rb
@@ -110,7 +110,7 @@ module Bundler
dependency = dependency_proxy.dep
name = dependency.name
@search_for[dependency_proxy] ||= begin
- results = results_for(dependency, @base[name])
+ results = results_for(dependency) + @base[name].select {|spec| requirement_satisfied_by?(dependency, nil, spec) }
if vertex = @base_dg.vertex_named(name)
locked_requirement = vertex.payload.requirement
@@ -175,8 +175,8 @@ module Bundler
@source_requirements[name] || @source_requirements[:default]
end
- def results_for(dependency, base)
- index_for(dependency).search(dependency, base)
+ def results_for(dependency)
+ index_for(dependency).search(dependency)
end
def name_for(dependency)