Class: Gem::DependencyResolver::IndexSet

Inherits:
Object
  • Object
show all
Defined in:
lib/rubygems/dependency_resolver.rb

Overview

The global rubygems pool represented via the traditional source index.

Instance Method Summary collapse

Constructor Details

#initializeIndexSet

Returns a new instance of IndexSet.



192
193
194
195
196
197
198
199
200
201
202
203
204
205
# File 'lib/rubygems/dependency_resolver.rb', line 192

def initialize
  @f = Gem::SpecFetcher.fetcher

  @all = Hash.new { |h,k| h[k] = [] }

  list, _ = @f.available_specs(:released)
  list.each do |uri, specs|
    specs.each do |n|
      @all[n.name] << [uri, n]
    end
  end

  @specs = {}
end

Instance Method Details

#find_all(req) ⇒ Object

Return an array of IndexSpecification objects matching DependencyRequest req.



210
211
212
213
214
215
216
217
218
219
220
221
222
223
# File 'lib/rubygems/dependency_resolver.rb', line 210

def find_all(req)
  res = []

  name = req.dependency.name

  @all[name].each do |uri, n|
    if req.dependency.match? n
      res << IndexSpecification.new(self, n.name, n.version,
                                    uri, n.platform)
    end
  end

  res
end

#load_spec(name, ver, source) ⇒ Object

Called from IndexSpecification to get a true Specification object.



234
235
236
237
# File 'lib/rubygems/dependency_resolver.rb', line 234

def load_spec(name, ver, source)
  key = "#{name}-#{ver}"
  @specs[key] ||= source.fetch_spec(Gem::NameTuple.new(name, ver))
end

#prefetch(gems) ⇒ Object

No prefetching needed since we load the whole index in initially.



228
229
# File 'lib/rubygems/dependency_resolver.rb', line 228

def prefetch(gems)
end