summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorDavid Rodríguez <[email protected]>2025-02-11 16:25:45 +0100
committerHiroshi SHIBATA <[email protected]>2025-02-13 09:37:51 +0900
commitee03df26bad92abb5397a82be3bc385a9ef69b5a (patch)
tree336250ac1b03ada273bcd76ec047c9e76f32a94e /lib
parent151b436c9d52e879e38f40cfcbcc3e516b9b439d (diff)
[rubygems/rubygems] `--prefer-local` should resolve to latest version 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. https://github.com/rubygems/rubygems/commit/118f8389a1
Diffstat (limited to 'lib')
-rw-r--r--lib/bundler/resolver.rb13
1 files changed, 11 insertions, 2 deletions
diff --git a/lib/bundler/resolver.rb b/lib/bundler/resolver.rb
index 56a6c7ac67..ce51056904 100644
--- a/lib/bundler/resolver.rb
+++ b/lib/bundler/resolver.rb
@@ -389,9 +389,18 @@ module Bundler
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