method
converge_dependencies
ruby latest stable - Class:
Bundler::Definition
converge_dependencies()private
No documentation available.
# File lib/bundler/definition.rb, line 691
def converge_dependencies
frozen = Bundler.frozen_bundle?
(@dependencies + @locked_deps.values).each do |dep|
locked_source = @locked_deps[dep.name]
# This is to make sure that if bundler is installing in deployment mode and
# after locked_source and sources don't match, we still use locked_source.
if frozen && !locked_source.nil? &&
locked_source.respond_to?(:source) && locked_source.source.instance_of?(Source::Path) && locked_source.source.path.exist?
dep.source = locked_source.source
elsif dep.source
dep.source = sources.get(dep.source)
end
if dep.source.is_a?(Source::Gemspec)
dep.platforms.concat(@platforms.map {|p| Dependency::REVERSE_PLATFORM_MAP[p] }.flatten(1)).uniq!
end
end
changes = false
# We want to know if all match, but don't want to check all entries
# This means we need to return false if any dependency doesn't match
# the lock or doesn't exist in the lock.
@dependencies.each do |dependency|
unless locked_dep = @locked_deps[dependency.name]
changes = true
next
end
# Gem::Dependency#== matches Gem::Dependency#type. As the lockfile
# doesn't carry a notion of the dependency type, if you use
# add_development_dependency in a gemspec that's loaded with the gemspec
# directive, the lockfile dependencies and resolved dependencies end up
# with a mismatch on #type. Work around that by setting the type on the
# dep from the lockfile.
locked_dep.instance_variable_set(:@type, dependency.type)
# We already know the name matches from the hash lookup
# so we only need to check the requirement now
changes ||= dependency.requirement != locked_dep.requirement
end
changes
end