Skip to content

Commit

Permalink
[rubygems/rubygems] --prefer-local should resolve to latest version…
Browse files Browse the repository at this point in the history
… if no gems are available locally

Filtering out remote specs should only apply where there are locally
installed specs. Otherwise they should always be considered.

rubygems/rubygems@118f8389a1
  • Loading branch information
deivid-rodriguez authored and hsbt committed Feb 13, 2025
1 parent 151b436 commit ee03df2
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 2 deletions.
13 changes: 11 additions & 2 deletions lib/bundler/resolver.rb
Original file line number Diff line number Diff line change
Expand Up @@ -389,9 +389,18 @@ def filter_prereleases(specs, package)
end

def filter_remote_specs(specs, package)
return specs unless package.prefer_local?
if package.prefer_local?
local_specs = specs.select {|s| s.is_a?(StubSpecification) }

specs.select {|s| s.is_a?(StubSpecification) }
if local_specs.empty?
package.consider_remote_versions!
specs
else
local_specs
end
else
specs
end
end

# Ignore versions that depend on themselves incorrectly
Expand Down
20 changes: 20 additions & 0 deletions spec/bundler/commands/install_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -1606,6 +1606,26 @@ def run
expect(out).to include("Fetching foo 1.0.1").and include("Installing foo 1.0.1").and include("Fetching b 1.0.0").and include("Installing b 1.0.0")
expect(last_command).to be_success
end

it "resolves to the latest version if no gems are available locally" do
build_repo4 do
build_gem "myreline", "0.3.8"
build_gem "debug", "0.2.1"

build_gem "debug", "1.10.0" do |s|
s.add_dependency "myreline"
end
end

install_gemfile <<~G, "prefer-local": true, verbose: true
source "https://gem.repo4"
gem "debug"
G

expect(out).to include("Fetching debug 1.10.0").and include("Installing debug 1.10.0").and include("Fetching myreline 0.3.8").and include("Installing myreline 0.3.8")
expect(last_command).to be_success
end
end

context "with a symlinked configured as bundle path and a gem with symlinks" do
Expand Down

0 comments on commit ee03df2

Please sign in to comment.