summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYehuda Katz <wycats@gmail.com>2012-03-02 16:57:41 -0800
committerYehuda Katz <wycats@gmail.com>2012-03-02 16:57:41 -0800
commita9e9b906fdb0d3602200ef057a5e309c7981c888 (patch)
treee63550e42d6fc9af0a15cc612688f4f7918e438d
parentff7b89d7ad84e6a2450ee2b444aecf0a42534887 (diff)
downloadbundler-a9e9b906fdb0d3602200ef057a5e309c7981c888.tar.gz
Fix bug involving source ordering and pinning
-rw-r--r--lib/bundler/index.rb10
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