diff options
author | Yehuda Katz <wycats@gmail.com> | 2012-03-02 16:57:41 -0800 |
---|---|---|
committer | Yehuda Katz <wycats@gmail.com> | 2012-03-02 16:57:41 -0800 |
commit | a9e9b906fdb0d3602200ef057a5e309c7981c888 (patch) | |
tree | e63550e42d6fc9af0a15cc612688f4f7918e438d | |
parent | ff7b89d7ad84e6a2450ee2b444aecf0a42534887 (diff) | |
download | bundler-a9e9b906fdb0d3602200ef057a5e309c7981c888.tar.gz |
Fix bug involving source ordering and pinning
-rw-r--r-- | lib/bundler/index.rb | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/lib/bundler/index.rb b/lib/bundler/index.rb index 68195213d6..8b5a560db1 100644 --- a/lib/bundler/index.rb +++ b/lib/bundler/index.rb @@ -1,3 +1,5 @@ +require "set" + module Bundler class Index include Enumerable @@ -41,9 +43,15 @@ module Bundler # about, returning all of the results. def search(query, base = nil) results = local_search(query, base) + seen = Set.new(results.map { |spec| [spec.name, spec.version, spec.platform] }) + @sources.each do |source| - results += source.search(query, base) + source.search(query, base).each do |spec| + results << spec unless seen.include?([spec.name, spec.version, spec.platform]) + seen << [spec.name, spec.version, spec.platform] + end end + results end |