bundler 2.6.5 → 2.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (136) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +1172 -1024
  3. data/README.md +7 -7
  4. data/bundler.gemspec +2 -2
  5. data/lib/bundler/build_metadata.rb +10 -11
  6. data/lib/bundler/checksum.rb +22 -12
  7. data/lib/bundler/cli/common.rb +1 -1
  8. data/lib/bundler/cli/config.rb +2 -2
  9. data/lib/bundler/cli/doctor/diagnose.rb +167 -0
  10. data/lib/bundler/cli/doctor/ssl.rb +249 -0
  11. data/lib/bundler/cli/doctor.rb +27 -155
  12. data/lib/bundler/cli/gem.rb +62 -30
  13. data/lib/bundler/cli/inject.rb +2 -2
  14. data/lib/bundler/cli/install.rb +5 -5
  15. data/lib/bundler/cli/issue.rb +2 -2
  16. data/lib/bundler/cli/lock.rb +2 -1
  17. data/lib/bundler/cli/outdated.rb +1 -1
  18. data/lib/bundler/cli/update.rb +3 -3
  19. data/lib/bundler/cli.rb +26 -49
  20. data/lib/bundler/compact_index_client/cache.rb +1 -1
  21. data/lib/bundler/compact_index_client/parser.rb +1 -1
  22. data/lib/bundler/compact_index_client/updater.rb +2 -1
  23. data/lib/bundler/compact_index_client.rb +1 -5
  24. data/lib/bundler/current_ruby.rb +27 -3
  25. data/lib/bundler/definition.rb +184 -151
  26. data/lib/bundler/dependency.rb +1 -1
  27. data/lib/bundler/dsl.rb +35 -26
  28. data/lib/bundler/errors.rb +18 -0
  29. data/lib/bundler/feature_flag.rb +15 -12
  30. data/lib/bundler/fetcher/dependency.rb +2 -1
  31. data/lib/bundler/fetcher/downloader.rb +33 -7
  32. data/lib/bundler/fetcher.rb +49 -19
  33. data/lib/bundler/friendly_errors.rb +3 -2
  34. data/lib/bundler/index.rb +7 -2
  35. data/lib/bundler/injector.rb +9 -9
  36. data/lib/bundler/installer.rb +6 -5
  37. data/lib/bundler/lazy_specification.rb +38 -19
  38. data/lib/bundler/lockfile_parser.rb +29 -10
  39. data/lib/bundler/man/bundle-add.1 +1 -1
  40. data/lib/bundler/man/bundle-binstubs.1 +1 -1
  41. data/lib/bundler/man/bundle-cache.1 +1 -1
  42. data/lib/bundler/man/bundle-check.1 +1 -1
  43. data/lib/bundler/man/bundle-clean.1 +1 -1
  44. data/lib/bundler/man/bundle-config.1 +175 -129
  45. data/lib/bundler/man/bundle-config.1.ronn +93 -88
  46. data/lib/bundler/man/bundle-console.1 +1 -1
  47. data/lib/bundler/man/bundle-doctor.1 +43 -4
  48. data/lib/bundler/man/bundle-doctor.1.ronn +48 -4
  49. data/lib/bundler/man/bundle-env.1 +1 -1
  50. data/lib/bundler/man/bundle-exec.1 +3 -3
  51. data/lib/bundler/man/bundle-exec.1.ronn +2 -2
  52. data/lib/bundler/man/bundle-fund.1 +1 -1
  53. data/lib/bundler/man/bundle-gem.1 +67 -44
  54. data/lib/bundler/man/bundle-gem.1.ronn +8 -4
  55. data/lib/bundler/man/bundle-help.1 +1 -1
  56. data/lib/bundler/man/bundle-info.1 +1 -1
  57. data/lib/bundler/man/bundle-init.1 +1 -1
  58. data/lib/bundler/man/bundle-inject.1 +2 -2
  59. data/lib/bundler/man/bundle-inject.1.ronn +1 -1
  60. data/lib/bundler/man/bundle-install.1 +4 -4
  61. data/lib/bundler/man/bundle-install.1.ronn +3 -4
  62. data/lib/bundler/man/bundle-issue.1 +1 -1
  63. data/lib/bundler/man/bundle-licenses.1 +1 -1
  64. data/lib/bundler/man/bundle-list.1 +1 -1
  65. data/lib/bundler/man/bundle-lock.1 +1 -1
  66. data/lib/bundler/man/bundle-open.1 +1 -1
  67. data/lib/bundler/man/bundle-outdated.1 +1 -1
  68. data/lib/bundler/man/bundle-platform.1 +1 -1
  69. data/lib/bundler/man/bundle-plugin.1 +1 -1
  70. data/lib/bundler/man/bundle-pristine.1 +1 -1
  71. data/lib/bundler/man/bundle-remove.1 +1 -1
  72. data/lib/bundler/man/bundle-show.1 +1 -1
  73. data/lib/bundler/man/bundle-update.1 +5 -5
  74. data/lib/bundler/man/bundle-update.1.ronn +4 -4
  75. data/lib/bundler/man/bundle-version.1 +1 -1
  76. data/lib/bundler/man/bundle-viz.1 +1 -1
  77. data/lib/bundler/man/bundle.1 +1 -1
  78. data/lib/bundler/man/gemfile.5 +1 -1
  79. data/lib/bundler/match_platform.rb +31 -12
  80. data/lib/bundler/materialization.rb +2 -2
  81. data/lib/bundler/plugin/api/source.rb +1 -1
  82. data/lib/bundler/plugin/index.rb +1 -1
  83. data/lib/bundler/plugin/installer/path.rb +8 -0
  84. data/lib/bundler/plugin.rb +1 -1
  85. data/lib/bundler/resolver/candidate.rb +12 -9
  86. data/lib/bundler/resolver/package.rb +1 -1
  87. data/lib/bundler/resolver/strategy.rb +40 -0
  88. data/lib/bundler/resolver.rb +18 -27
  89. data/lib/bundler/rubygems_ext.rb +131 -120
  90. data/lib/bundler/rubygems_integration.rb +11 -6
  91. data/lib/bundler/runtime.rb +9 -6
  92. data/lib/bundler/self_manager.rb +32 -42
  93. data/lib/bundler/settings/validator.rb +0 -23
  94. data/lib/bundler/settings.rb +4 -6
  95. data/lib/bundler/shared_helpers.rb +10 -4
  96. data/lib/bundler/source/gemspec.rb +1 -4
  97. data/lib/bundler/source/git/git_proxy.rb +17 -6
  98. data/lib/bundler/source/git.rb +5 -1
  99. data/lib/bundler/source/path.rb +9 -2
  100. data/lib/bundler/source/rubygems/remote.rb +11 -3
  101. data/lib/bundler/source_list.rb +30 -16
  102. data/lib/bundler/source_map.rb +1 -1
  103. data/lib/bundler/spec_set.rb +55 -16
  104. data/lib/bundler/templates/Executable +0 -11
  105. data/lib/bundler/templates/newgem/github/workflows/main.yml.tt +2 -0
  106. data/lib/bundler/templates/newgem/newgem.gemspec.tt +6 -5
  107. data/lib/bundler/ui/shell.rb +2 -2
  108. data/lib/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb +53 -3
  109. data/lib/bundler/vendor/connection_pool/lib/connection_pool/version.rb +1 -1
  110. data/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +11 -0
  111. data/lib/bundler/vendor/net-http-persistent/README.rdoc +1 -1
  112. data/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/timed_stack_multi.rb +2 -1
  113. data/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +81 -42
  114. data/lib/bundler/vendor/pub_grub/lib/pub_grub/basic_package_source.rb +4 -24
  115. data/lib/bundler/vendor/pub_grub/lib/pub_grub/strategy.rb +42 -0
  116. data/lib/bundler/vendor/pub_grub/lib/pub_grub/version_range.rb +20 -8
  117. data/lib/bundler/vendor/pub_grub/lib/pub_grub/version_solver.rb +17 -29
  118. data/lib/bundler/vendor/uri/lib/uri/common.rb +7 -3
  119. data/lib/bundler/vendor/uri/lib/uri/generic.rb +12 -11
  120. data/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb +6 -6
  121. data/lib/bundler/vendor/uri/lib/uri/version.rb +1 -1
  122. data/lib/bundler/version.rb +10 -2
  123. data/lib/bundler/worker.rb +1 -1
  124. data/lib/bundler.rb +14 -12
  125. metadata +9 -16
  126. data/lib/bundler/compact_index_client/gem_parser.rb +0 -32
  127. data/lib/bundler/gem_helpers.rb +0 -144
  128. data/lib/bundler/templates/Executable.bundler +0 -109
  129. data/lib/bundler/vendor/connection_pool/.document +0 -1
  130. data/lib/bundler/vendor/fileutils/.document +0 -1
  131. data/lib/bundler/vendor/net-http-persistent/.document +0 -1
  132. data/lib/bundler/vendor/pub_grub/.document +0 -1
  133. data/lib/bundler/vendor/securerandom/.document +0 -1
  134. data/lib/bundler/vendor/thor/.document +0 -1
  135. data/lib/bundler/vendor/tsort/.document +0 -1
  136. data/lib/bundler/vendor/uri/.document +0 -1
@@ -9,13 +9,13 @@ bundle-update(1) -- Update your gems to the latest available versions
9
9
  [--local]
10
10
  [--ruby]
11
11
  [--bundler[=VERSION]]
12
+ [--force]
12
13
  [--full-index]
13
14
  [--gemfile=GEMFILE]
14
15
  [--jobs=NUMBER]
15
16
  [--quiet]
16
17
  [--patch|--minor|--major]
17
18
  [--pre]
18
- [--redownload]
19
19
  [--strict]
20
20
  [--conservative]
21
21
 
@@ -54,6 +54,9 @@ gem.
54
54
  * `--bundler[=BUNDLER]`:
55
55
  Update the locked version of bundler to the invoked bundler version.
56
56
 
57
+ * `--force`, `--redownload`:
58
+ Force reinstalling every gem, even if already installed.
59
+
57
60
  * `--full-index`:
58
61
  Fall back to using the single-file index of all gems.
59
62
 
@@ -70,9 +73,6 @@ gem.
70
73
  * `--quiet`:
71
74
  Only output warnings and errors.
72
75
 
73
- * `--redownload`, `--force`:
74
- Force downloading every gem.
75
-
76
76
  * `--patch`:
77
77
  Prefer updating only to next patch version.
78
78
 
@@ -1,6 +1,6 @@
1
1
  .\" generated with Ronn-NG/v0.10.1
2
2
  .\" http://github.com/apjanke/ronn-ng/tree/0.10.1
3
- .TH "BUNDLE\-VERSION" "1" "January 2025" ""
3
+ .TH "BUNDLE\-VERSION" "1" "July 2025" ""
4
4
  .SH "NAME"
5
5
  \fBbundle\-version\fR \- Prints Bundler version information
6
6
  .SH "SYNOPSIS"
@@ -1,6 +1,6 @@
1
1
  .\" generated with Ronn-NG/v0.10.1
2
2
  .\" http://github.com/apjanke/ronn-ng/tree/0.10.1
3
- .TH "BUNDLE\-VIZ" "1" "January 2025" ""
3
+ .TH "BUNDLE\-VIZ" "1" "July 2025" ""
4
4
  .SH "NAME"
5
5
  \fBbundle\-viz\fR \- Generates a visual dependency graph for your Gemfile
6
6
  .SH "SYNOPSIS"
@@ -1,6 +1,6 @@
1
1
  .\" generated with Ronn-NG/v0.10.1
2
2
  .\" http://github.com/apjanke/ronn-ng/tree/0.10.1
3
- .TH "BUNDLE" "1" "January 2025" ""
3
+ .TH "BUNDLE" "1" "July 2025" ""
4
4
  .SH "NAME"
5
5
  \fBbundle\fR \- Ruby Dependency Management
6
6
  .SH "SYNOPSIS"
@@ -1,6 +1,6 @@
1
1
  .\" generated with Ronn-NG/v0.10.1
2
2
  .\" http://github.com/apjanke/ronn-ng/tree/0.10.1
3
- .TH "GEMFILE" "5" "January 2025" ""
3
+ .TH "GEMFILE" "5" "July 2025" ""
4
4
  .SH "NAME"
5
5
  \fBGemfile\fR \- A format for describing gem dependencies for Ruby programs
6
6
  .SH "SYNOPSIS"
@@ -1,23 +1,42 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative "gem_helpers"
4
-
5
3
  module Bundler
6
4
  module MatchPlatform
7
- include GemHelpers
5
+ def installable_on_platform?(target_platform) # :nodoc:
6
+ return true if [Gem::Platform::RUBY, nil, target_platform].include?(platform)
7
+ return true if Gem::Platform.new(platform) === target_platform
8
8
 
9
- def match_platform(p)
10
- MatchPlatform.platforms_match?(platform, p)
9
+ false
11
10
  end
12
11
 
13
- def self.platforms_match?(gemspec_platform, local_platform)
14
- return true if gemspec_platform.nil?
15
- return true if gemspec_platform == Gem::Platform::RUBY
16
- return true if local_platform == gemspec_platform
17
- gemspec_platform = Gem::Platform.new(gemspec_platform)
18
- return true if gemspec_platform === local_platform
12
+ def self.select_best_platform_match(specs, platform, force_ruby: false, prefer_locked: false)
13
+ matching = select_all_platform_match(specs, platform, force_ruby: force_ruby, prefer_locked: prefer_locked)
19
14
 
20
- false
15
+ Gem::Platform.sort_and_filter_best_platform_match(matching, platform)
16
+ end
17
+
18
+ def self.select_best_local_platform_match(specs, force_ruby: false)
19
+ local = Bundler.local_platform
20
+ matching = select_all_platform_match(specs, local, force_ruby: force_ruby).filter_map(&:materialized_for_installation)
21
+
22
+ Gem::Platform.sort_best_platform_match(matching, local)
23
+ end
24
+
25
+ def self.select_all_platform_match(specs, platform, force_ruby: false, prefer_locked: false)
26
+ matching = specs.select {|spec| spec.installable_on_platform?(force_ruby ? Gem::Platform::RUBY : platform) }
27
+
28
+ specs.each(&:force_ruby_platform!) if force_ruby
29
+
30
+ if prefer_locked
31
+ locked_originally = matching.select {|spec| spec.is_a?(::Bundler::LazySpecification) }
32
+ return locked_originally if locked_originally.any?
33
+ end
34
+
35
+ matching
36
+ end
37
+
38
+ def self.generic_local_platform_is_ruby?
39
+ Bundler.generic_local_platform == Gem::Platform::RUBY
21
40
  end
22
41
  end
23
42
  end
@@ -22,9 +22,9 @@ module Bundler
22
22
  @specs ||= if @candidates.nil?
23
23
  []
24
24
  elsif platform
25
- GemHelpers.select_best_platform_match(@candidates, platform, force_ruby: dep.force_ruby_platform)
25
+ MatchPlatform.select_best_platform_match(@candidates, platform, force_ruby: dep.force_ruby_platform)
26
26
  else
27
- GemHelpers.select_best_local_platform_match(@candidates, force_ruby: dep.force_ruby_platform || dep.default_force_ruby_platform)
27
+ MatchPlatform.select_best_local_platform_match(@candidates, force_ruby: dep.force_ruby_platform || dep.default_force_ruby_platform)
28
28
  end
29
29
  end
30
30
 
@@ -67,7 +67,7 @@ module Bundler
67
67
  # to check out same version of gem later.
68
68
  #
69
69
  # There options are passed when the source plugin is created from the
70
- # lock file.
70
+ # lockfile.
71
71
  #
72
72
  # @return [Hash]
73
73
  def options_to_lock
@@ -31,7 +31,7 @@ module Bundler
31
31
 
32
32
  begin
33
33
  load_index(global_index_file, true)
34
- rescue GenericSystemCallError
34
+ rescue PermissionError
35
35
  # no need to fail when on a read-only FS, for example
36
36
  nil
37
37
  rescue ArgumentError => e
@@ -8,6 +8,14 @@ module Bundler
8
8
  SharedHelpers.in_bundle? ? Bundler.root : Plugin.root
9
9
  end
10
10
 
11
+ def eql?(other)
12
+ return unless other.class == self.class
13
+ expanded_original_path == other.expanded_original_path &&
14
+ version == other.version
15
+ end
16
+
17
+ alias_method :==, :eql?
18
+
11
19
  def generate_bin(spec, disable_extensions = false)
12
20
  # Need to find a way without code duplication
13
21
  # For now, we can ignore this
@@ -195,7 +195,7 @@ module Bundler
195
195
  @sources[name]
196
196
  end
197
197
 
198
- # @param [Hash] The options that are present in the lock file
198
+ # @param [Hash] The options that are present in the lockfile
199
199
  # @return [API::Source] the instance of the class that handles the source
200
200
  # type passed in locked_opts
201
201
  def from_lock(locked_opts)
@@ -17,7 +17,7 @@ module Bundler
17
17
  # Some candidates may also keep some information explicitly about the
18
18
  # package they refer to. These candidates are referred to as "canonical" and
19
19
  # are used when materializing resolution results back into RubyGems
20
- # specifications that can be installed, written to lock files, and so on.
20
+ # specifications that can be installed, written to lockfiles, and so on.
21
21
  #
22
22
  class Candidate
23
23
  include Comparable
@@ -48,35 +48,38 @@ module Bundler
48
48
  @version.segments
49
49
  end
50
50
 
51
- def sort_obj
52
- [@version, @priority]
53
- end
54
-
55
51
  def <=>(other)
56
52
  return unless other.is_a?(self.class)
57
53
 
58
- sort_obj <=> other.sort_obj
54
+ version_comparison = version <=> other.version
55
+ return version_comparison unless version_comparison.zero?
56
+
57
+ priority <=> other.priority
59
58
  end
60
59
 
61
60
  def ==(other)
62
61
  return unless other.is_a?(self.class)
63
62
 
64
- sort_obj == other.sort_obj
63
+ version == other.version && priority == other.priority
65
64
  end
66
65
 
67
66
  def eql?(other)
68
67
  return unless other.is_a?(self.class)
69
68
 
70
- sort_obj.eql?(other.sort_obj)
69
+ version.eql?(other.version) && priority.eql?(other.priority)
71
70
  end
72
71
 
73
72
  def hash
74
- sort_obj.hash
73
+ [@version, @priority].hash
75
74
  end
76
75
 
77
76
  def to_s
78
77
  @version.to_s
79
78
  end
79
+
80
+ protected
81
+
82
+ attr_reader :priority
80
83
  end
81
84
  end
82
85
  end
@@ -30,7 +30,7 @@ module Bundler
30
30
  def platform_specs(specs)
31
31
  platforms.map do |platform|
32
32
  prefer_locked = @new_platforms.include?(platform) ? false : !unlock?
33
- GemHelpers.select_best_platform_match(specs, platform, prefer_locked: prefer_locked)
33
+ MatchPlatform.select_best_platform_match(specs, platform, prefer_locked: prefer_locked)
34
34
  end
35
35
  end
36
36
 
@@ -0,0 +1,40 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Bundler
4
+ class Resolver
5
+ class Strategy
6
+ def initialize(source)
7
+ @source = source
8
+ end
9
+
10
+ def next_package_and_version(unsatisfied)
11
+ package, range = next_term_to_try_from(unsatisfied)
12
+
13
+ [package, most_preferred_version_of(package, range).first]
14
+ end
15
+
16
+ private
17
+
18
+ def next_term_to_try_from(unsatisfied)
19
+ unsatisfied.min_by do |package, range|
20
+ matching_versions = @source.versions_for(package, range)
21
+ higher_versions = @source.versions_for(package, range.upper_invert)
22
+
23
+ [matching_versions.count <= 1 ? 0 : 1, higher_versions.count]
24
+ end
25
+ end
26
+
27
+ def most_preferred_version_of(package, range)
28
+ versions = @source.versions_for(package, range)
29
+
30
+ # Conditional avoids (among other things) calling
31
+ # sort_versions_by_preferred with the root package
32
+ if versions.size > 1
33
+ @source.sort_versions_by_preferred(package, versions)
34
+ else
35
+ versions
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
@@ -12,8 +12,7 @@ module Bundler
12
12
  require_relative "resolver/candidate"
13
13
  require_relative "resolver/incompatibility"
14
14
  require_relative "resolver/root"
15
-
16
- include GemHelpers
15
+ require_relative "resolver/strategy"
17
16
 
18
17
  def initialize(base, gem_version_promoter, most_specific_locked_platform = nil)
19
18
  @source_requirements = base.source_requirements
@@ -78,7 +77,7 @@ module Bundler
78
77
  end
79
78
 
80
79
  def solve_versions(root:, logger:)
81
- solver = PubGrub::VersionSolver.new(source: self, root: root, logger: logger)
80
+ solver = PubGrub::VersionSolver.new(source: self, root: root, strategy: Strategy.new(self), logger: logger)
82
81
  result = solver.solve
83
82
  resolved_specs = result.flat_map {|package, version| version.to_specs(package, @most_specific_locked_platform) }
84
83
  SpecSet.new(resolved_specs).specs_with_additional_variants_from(@base.locked_specs)
@@ -167,15 +166,7 @@ module Bundler
167
166
  end
168
167
 
169
168
  def versions_for(package, range=VersionRange.any)
170
- versions = select_sorted_versions(package, range)
171
-
172
- # Conditional avoids (among other things) calling
173
- # sort_versions_by_preferred with the root package
174
- if versions.size > 1
175
- sort_versions_by_preferred(package, versions)
176
- else
177
- versions
178
- end
169
+ range.select_versions(@sorted_versions[package])
179
170
  end
180
171
 
181
172
  def no_versions_incompatibility_for(package, unsatisfied_term)
@@ -280,12 +271,12 @@ module Bundler
280
271
  next groups if platform_specs.all?(&:empty?)
281
272
  end
282
273
 
283
- ruby_specs = select_best_platform_match(specs, Gem::Platform::RUBY)
274
+ ruby_specs = MatchPlatform.select_best_platform_match(specs, Gem::Platform::RUBY)
284
275
  ruby_group = Resolver::SpecGroup.new(ruby_specs)
285
276
 
286
277
  unless ruby_group.empty?
287
- platform_specs.each do |specs|
288
- ruby_group.merge(Resolver::SpecGroup.new(specs))
278
+ platform_specs.each do |s|
279
+ ruby_group.merge(Resolver::SpecGroup.new(s))
289
280
  end
290
281
 
291
282
  groups << Resolver::Candidate.new(version, group: ruby_group, priority: -1)
@@ -319,6 +310,16 @@ module Bundler
319
310
  "Gemfile"
320
311
  end
321
312
 
313
+ def raise_incomplete!(incomplete_specs)
314
+ raise_not_found!(@base.get_package(incomplete_specs.first.name))
315
+ end
316
+
317
+ def sort_versions_by_preferred(package, versions)
318
+ @gem_version_promoter.sort_versions(package, versions)
319
+ end
320
+
321
+ private
322
+
322
323
  def raise_not_found!(package)
323
324
  name = package.name
324
325
  source = source_for(name)
@@ -355,8 +356,6 @@ module Bundler
355
356
  raise GemNotFound, message
356
357
  end
357
358
 
358
- private
359
-
360
359
  def filtered_versions_for(package)
361
360
  @gem_version_promoter.filter_versions(package, @all_versions[package])
362
361
  end
@@ -414,10 +413,6 @@ module Bundler
414
413
  requirement.satisfied_by?(spec.version) || spec.source.is_a?(Source::Gemspec)
415
414
  end
416
415
 
417
- def sort_versions_by_preferred(package, versions)
418
- @gem_version_promoter.sort_versions(package, versions)
419
- end
420
-
421
416
  def repository_for(package)
422
417
  source_for(package.name)
423
418
  end
@@ -433,7 +428,7 @@ module Bundler
433
428
  next [dep_package, dep_constraint] if name == "bundler"
434
429
 
435
430
  dep_range = dep_constraint.range
436
- versions = select_sorted_versions(dep_package, dep_range)
431
+ versions = versions_for(dep_package, dep_range)
437
432
  if versions.empty?
438
433
  if dep_package.ignores_prereleases? || dep_package.prefer_local?
439
434
  @all_versions.delete(dep_package)
@@ -441,7 +436,7 @@ module Bundler
441
436
  end
442
437
  dep_package.consider_prereleases! if dep_package.ignores_prereleases?
443
438
  dep_package.consider_remote_versions! if dep_package.prefer_local?
444
- versions = select_sorted_versions(dep_package, dep_range)
439
+ versions = versions_for(dep_package, dep_range)
445
440
  end
446
441
 
447
442
  if versions.empty? && select_all_versions(dep_package, dep_range).any?
@@ -456,10 +451,6 @@ module Bundler
456
451
  end.to_h
457
452
  end
458
453
 
459
- def select_sorted_versions(package, range)
460
- range.select_versions(@sorted_versions[package])
461
- end
462
-
463
454
  def select_all_versions(package, range)
464
455
  range.select_versions(@all_versions[package])
465
456
  end