diff options
-rw-r--r-- | lib/bundler/definition.rb | 2 | ||||
-rw-r--r-- | lib/bundler/resolver/package.rb | 2 | ||||
-rw-r--r-- | lib/bundler/spec_set.rb | 4 |
3 files changed, 6 insertions, 2 deletions
diff --git a/lib/bundler/definition.rb b/lib/bundler/definition.rb index 85951f9314..fd81fe2aa3 100644 --- a/lib/bundler/definition.rb +++ b/lib/bundler/definition.rb @@ -1108,7 +1108,7 @@ module Bundler return resolution_packages if @explicit_unlocks.empty? full_update = dup_for_full_unlock.resolve @explicit_unlocks.each do |name| - version = full_update[name].first&.version + version = full_update.version_for(name) resolution_packages.base_requirements[name] = Gem::Requirement.new("= #{version}") if version end resolution_packages diff --git a/lib/bundler/resolver/package.rb b/lib/bundler/resolver/package.rb index 5aecc12d05..7bdcd7e9eb 100644 --- a/lib/bundler/resolver/package.rb +++ b/lib/bundler/resolver/package.rb @@ -18,7 +18,7 @@ module Bundler def initialize(name, platforms, locked_specs:, unlock:, prerelease: false, prefer_local: false, dependency: nil) @name = name @platforms = platforms - @locked_version = locked_specs[name].first&.version + @locked_version = locked_specs.version_for(name) @unlock = unlock @dependency = dependency || Dependency.new(name, @locked_version) @top_level = !dependency.nil? diff --git a/lib/bundler/spec_set.rb b/lib/bundler/spec_set.rb index b44b98c8d3..3598ef5d52 100644 --- a/lib/bundler/spec_set.rb +++ b/lib/bundler/spec_set.rb @@ -169,6 +169,10 @@ module Bundler reset! end + def version_for(name) + self[name].first&.version + end + def what_required(spec) unless req = find {|s| s.runtime_dependencies.any? {|d| d.name == spec.name } } return [spec] |