method
find_all
v2_5_5 -
Show latest stable
- Class:
Gem::Resolver::InstallerSet
find_all(req)public
Returns an array of IndexSpecification objects matching DependencyRequest req.
# File lib/rubygems/resolver/installer_set.rb, line 115
def find_all req
res = []
dep = req.dependency
return res if @ignore_dependencies and
@always_install.none? { |spec| dep.match? spec }
name = dep.name
dep.matching_specs.each do |gemspec|
next if @always_install.any? { |spec| spec.name == gemspec.name }
res << Gem::Resolver::InstalledSpecification.new(self, gemspec)
end unless @ignore_installed
if consider_local? then
matching_local = @local.values.select do |spec, _|
req.match? spec
end.map do |spec, source|
Gem::Resolver::LocalSpecification.new self, spec, source
end
res.concat matching_local
begin
if local_spec = @local_source.find_gem(name, dep.requirement) then
res << Gem::Resolver::IndexSpecification.new(
self, local_spec.name, local_spec.version,
@local_source, local_spec.platform)
end
rescue Gem::Package::FormatError
# ignore
end
end
res.delete_if do |spec|
spec.version.prerelease? and not dep.prerelease?
end
res.concat @remote_set.find_all req if consider_remote?
res
end Related methods
- Instance methods
- add_always_install
- add_local
- consider_local?
- consider_remote?
- errors
- find_all
- inspect
- load_spec
- local?
- prefetch
- prerelease=
- pretty_print
- remote=
- Class methods
- new