rubygems-update 3.6.9 → 3.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 (145) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +873 -790
  3. data/CODE_OF_CONDUCT.md +1 -1
  4. data/CONTRIBUTING.md +9 -0
  5. data/Manifest.txt +4 -21
  6. data/README.md +1 -1
  7. data/SECURITY.md +7 -0
  8. data/bundler/CHANGELOG.md +1110 -1033
  9. data/bundler/README.md +7 -7
  10. data/bundler/bundler.gemspec +2 -2
  11. data/bundler/lib/bundler/build_metadata.rb +10 -11
  12. data/bundler/lib/bundler/cli/common.rb +1 -1
  13. data/bundler/lib/bundler/cli/config.rb +2 -2
  14. data/bundler/lib/bundler/cli/gem.rb +62 -30
  15. data/bundler/lib/bundler/cli/install.rb +5 -5
  16. data/bundler/lib/bundler/cli/outdated.rb +1 -1
  17. data/bundler/lib/bundler/cli/update.rb +3 -3
  18. data/bundler/lib/bundler/cli.rb +24 -38
  19. data/bundler/lib/bundler/compact_index_client.rb +1 -5
  20. data/bundler/lib/bundler/current_ruby.rb +27 -3
  21. data/bundler/lib/bundler/definition.rb +21 -22
  22. data/bundler/lib/bundler/dependency.rb +1 -1
  23. data/bundler/lib/bundler/dsl.rb +33 -23
  24. data/bundler/lib/bundler/feature_flag.rb +15 -12
  25. data/bundler/lib/bundler/fetcher/dependency.rb +2 -1
  26. data/bundler/lib/bundler/fetcher/downloader.rb +33 -7
  27. data/bundler/lib/bundler/fetcher.rb +49 -19
  28. data/bundler/lib/bundler/friendly_errors.rb +2 -1
  29. data/bundler/lib/bundler/index.rb +7 -2
  30. data/bundler/lib/bundler/installer.rb +5 -4
  31. data/bundler/lib/bundler/lazy_specification.rb +9 -7
  32. data/bundler/lib/bundler/lockfile_parser.rb +21 -5
  33. data/bundler/lib/bundler/man/bundle-add.1 +1 -1
  34. data/bundler/lib/bundler/man/bundle-binstubs.1 +1 -1
  35. data/bundler/lib/bundler/man/bundle-cache.1 +1 -1
  36. data/bundler/lib/bundler/man/bundle-check.1 +1 -1
  37. data/bundler/lib/bundler/man/bundle-clean.1 +1 -1
  38. data/bundler/lib/bundler/man/bundle-config.1 +172 -126
  39. data/bundler/lib/bundler/man/bundle-config.1.ronn +91 -91
  40. data/bundler/lib/bundler/man/bundle-console.1 +1 -1
  41. data/bundler/lib/bundler/man/bundle-doctor.1 +43 -4
  42. data/bundler/lib/bundler/man/bundle-doctor.1.ronn +48 -4
  43. data/bundler/lib/bundler/man/bundle-env.1 +1 -1
  44. data/bundler/lib/bundler/man/bundle-exec.1 +1 -1
  45. data/bundler/lib/bundler/man/bundle-fund.1 +1 -1
  46. data/bundler/lib/bundler/man/bundle-gem.1 +67 -44
  47. data/bundler/lib/bundler/man/bundle-gem.1.ronn +8 -4
  48. data/bundler/lib/bundler/man/bundle-help.1 +1 -1
  49. data/bundler/lib/bundler/man/bundle-info.1 +1 -1
  50. data/bundler/lib/bundler/man/bundle-init.1 +1 -1
  51. data/bundler/lib/bundler/man/bundle-inject.1 +2 -2
  52. data/bundler/lib/bundler/man/bundle-inject.1.ronn +1 -1
  53. data/bundler/lib/bundler/man/bundle-install.1 +4 -4
  54. data/bundler/lib/bundler/man/bundle-install.1.ronn +3 -4
  55. data/bundler/lib/bundler/man/bundle-issue.1 +1 -1
  56. data/bundler/lib/bundler/man/bundle-licenses.1 +1 -1
  57. data/bundler/lib/bundler/man/bundle-list.1 +1 -1
  58. data/bundler/lib/bundler/man/bundle-lock.1 +1 -1
  59. data/bundler/lib/bundler/man/bundle-open.1 +1 -1
  60. data/bundler/lib/bundler/man/bundle-outdated.1 +1 -1
  61. data/bundler/lib/bundler/man/bundle-platform.1 +1 -1
  62. data/bundler/lib/bundler/man/bundle-plugin.1 +1 -1
  63. data/bundler/lib/bundler/man/bundle-pristine.1 +1 -1
  64. data/bundler/lib/bundler/man/bundle-remove.1 +1 -1
  65. data/bundler/lib/bundler/man/bundle-show.1 +1 -1
  66. data/bundler/lib/bundler/man/bundle-update.1 +5 -5
  67. data/bundler/lib/bundler/man/bundle-update.1.ronn +4 -4
  68. data/bundler/lib/bundler/man/bundle-version.1 +1 -1
  69. data/bundler/lib/bundler/man/bundle-viz.1 +1 -1
  70. data/bundler/lib/bundler/man/bundle.1 +1 -1
  71. data/bundler/lib/bundler/man/gemfile.5 +1 -1
  72. data/bundler/lib/bundler/match_platform.rb +31 -12
  73. data/bundler/lib/bundler/materialization.rb +2 -2
  74. data/bundler/lib/bundler/resolver/package.rb +1 -1
  75. data/bundler/lib/bundler/resolver.rb +1 -3
  76. data/bundler/lib/bundler/rubygems_ext.rb +116 -120
  77. data/bundler/lib/bundler/rubygems_integration.rb +11 -6
  78. data/bundler/lib/bundler/runtime.rb +1 -1
  79. data/bundler/lib/bundler/self_manager.rb +32 -42
  80. data/bundler/lib/bundler/settings/validator.rb +0 -23
  81. data/bundler/lib/bundler/settings.rb +4 -6
  82. data/bundler/lib/bundler/shared_helpers.rb +6 -4
  83. data/bundler/lib/bundler/source/git/git_proxy.rb +3 -3
  84. data/bundler/lib/bundler/source/path.rb +7 -0
  85. data/bundler/lib/bundler/source_list.rb +1 -5
  86. data/bundler/lib/bundler/source_map.rb +1 -1
  87. data/bundler/lib/bundler/spec_set.rb +7 -3
  88. data/bundler/lib/bundler/templates/Executable +0 -11
  89. data/bundler/lib/bundler/templates/newgem/github/workflows/main.yml.tt +2 -0
  90. data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +6 -5
  91. data/bundler/lib/bundler/ui/shell.rb +2 -2
  92. data/bundler/lib/bundler/vendor/net-http-persistent/README.rdoc +1 -1
  93. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/timed_stack_multi.rb +2 -1
  94. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +81 -42
  95. data/bundler/lib/bundler/version.rb +10 -2
  96. data/bundler/lib/bundler/worker.rb +1 -1
  97. data/bundler/lib/bundler.rb +14 -12
  98. data/doc/bundler/UPGRADING.md +132 -127
  99. data/doc/rubygems/CONTRIBUTING.md +1 -1
  100. data/lib/rubygems/basic_specification.rb +7 -0
  101. data/lib/rubygems/commands/pristine_command.rb +9 -12
  102. data/lib/rubygems/commands/setup_command.rb +2 -2
  103. data/lib/rubygems/core_ext/kernel_require.rb +5 -2
  104. data/lib/rubygems/ext/cargo_builder.rb +4 -0
  105. data/lib/rubygems/gemcutter_utilities/webauthn_listener.rb +10 -3
  106. data/lib/rubygems/gemcutter_utilities.rb +1 -1
  107. data/lib/rubygems/installer.rb +45 -50
  108. data/lib/rubygems/platform.rb +142 -39
  109. data/lib/rubygems/remote_fetcher.rb +3 -3
  110. data/lib/rubygems/request_set.rb +3 -6
  111. data/lib/rubygems/resolver/best_set.rb +1 -1
  112. data/lib/rubygems/resolver/source_set.rb +1 -1
  113. data/lib/rubygems/resolver.rb +1 -1
  114. data/lib/rubygems/s3_uri_signer.rb +5 -3
  115. data/lib/rubygems/source.rb +28 -22
  116. data/lib/rubygems/specification.rb +2 -2
  117. data/lib/rubygems/uri_formatter.rb +2 -1
  118. data/lib/rubygems/util/licenses.rb +21 -0
  119. data/lib/rubygems/vendor/net-http/lib/net/http.rb +14 -19
  120. data/lib/rubygems/vendor/resolv/lib/resolv.rb +50 -22
  121. data/lib/rubygems.rb +72 -7
  122. data/rubygems-update.gemspec +2 -2
  123. data/setup.rb +1 -1
  124. metadata +7 -24
  125. data/bundler/lib/bundler/gem_helpers.rb +0 -144
  126. data/bundler/lib/bundler/templates/Executable.bundler +0 -109
  127. data/bundler/lib/bundler/vendor/fileutils/.document +0 -1
  128. data/bundler/lib/bundler/vendor/net-http-persistent/.document +0 -1
  129. data/bundler/lib/bundler/vendor/pub_grub/.document +0 -1
  130. data/bundler/lib/bundler/vendor/securerandom/.document +0 -1
  131. data/bundler/lib/bundler/vendor/thor/.document +0 -1
  132. data/bundler/lib/bundler/vendor/tsort/.document +0 -1
  133. data/bundler/lib/bundler/vendor/uri/.document +0 -1
  134. data/lib/rubygems/ssl_certs/rubygems.org/GlobalSignRootCA.pem +0 -21
  135. data/lib/rubygems/vendor/molinillo/.document +0 -1
  136. data/lib/rubygems/vendor/net-http/.document +0 -1
  137. data/lib/rubygems/vendor/net-protocol/.document +0 -1
  138. data/lib/rubygems/vendor/optparse/.document +0 -1
  139. data/lib/rubygems/vendor/resolv/.document +0 -1
  140. data/lib/rubygems/vendor/securerandom/.document +0 -1
  141. data/lib/rubygems/vendor/timeout/.document +0 -1
  142. data/lib/rubygems/vendor/tsort/.document +0 -1
  143. data/lib/rubygems/vendor/uri/.document +0 -1
  144. /data/lib/rubygems/ssl_certs/rubygems.org/{GlobalSignRootCA_R3.pem → GlobalSign.pem} +0 -0
  145. /data/{bundler/lib/bundler/vendor/connection_pool → lib/rubygems/vendor}/.document +0 -0
@@ -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\-INIT" "1" "March 2025" ""
3
+ .TH "BUNDLE\-INIT" "1" "July 2025" ""
4
4
  .SH "NAME"
5
5
  \fBbundle\-init\fR \- Generates a Gemfile into the current working directory
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\-INJECT" "1" "March 2025" ""
3
+ .TH "BUNDLE\-INJECT" "1" "July 2025" ""
4
4
  .SH "NAME"
5
5
  \fBbundle\-inject\fR \- Add named gem(s) with version requirements to Gemfile
6
6
  .SH "SYNOPSIS"
@@ -20,7 +20,7 @@ bundle inject 'rack' '> 0'
20
20
  .P
21
21
  This will inject the 'rack' gem with a version greater than 0 in your [\fBGemfile(5)\fR][Gemfile(5)] and Gemfile\.lock\.
22
22
  .P
23
- The \fBbundle inject\fR command was deprecated in Bundler 2\.1 and will be removed in Bundler 3\.0\.
23
+ The \fBbundle inject\fR command was deprecated in Bundler 2\.1 and will be removed in Bundler 4\.0\.
24
24
  .SH "OPTIONS"
25
25
  .TP
26
26
  \fB\-\-source=SOURCE\fR
@@ -21,7 +21,7 @@ Example:
21
21
  This will inject the 'rack' gem with a version greater than 0 in your
22
22
  [`Gemfile(5)`][Gemfile(5)] and Gemfile.lock.
23
23
 
24
- The `bundle inject` command was deprecated in Bundler 2.1 and will be removed in Bundler 3.0.
24
+ The `bundle inject` command was deprecated in Bundler 2.1 and will be removed in Bundler 4.0.
25
25
 
26
26
  ## OPTIONS
27
27
 
@@ -1,10 +1,10 @@
1
1
  .\" generated with Ronn-NG/v0.10.1
2
2
  .\" http://github.com/apjanke/ronn-ng/tree/0.10.1
3
- .TH "BUNDLE\-INSTALL" "1" "March 2025" ""
3
+ .TH "BUNDLE\-INSTALL" "1" "July 2025" ""
4
4
  .SH "NAME"
5
5
  \fBbundle\-install\fR \- Install the dependencies specified in your Gemfile
6
6
  .SH "SYNOPSIS"
7
- \fBbundle install\fR [\-\-binstubs[=DIRECTORY]] [\-\-clean] [\-\-deployment] [\-\-frozen] [\-\-full\-index] [\-\-gemfile=GEMFILE] [\-\-jobs=NUMBER] [\-\-local] [\-\-no\-cache] [\-\-no\-prune] [\-\-path PATH] [\-\-prefer\-local] [\-\-quiet] [\-\-redownload] [\-\-retry=NUMBER] [\-\-shebang=SHEBANG] [\-\-standalone[=GROUP[ GROUP\|\.\|\.\|\.]]] [\-\-system] [\-\-trust\-policy=TRUST\-POLICY] [\-\-target\-rbconfig=TARGET\-RBCONFIG] [\-\-with=GROUP[ GROUP\|\.\|\.\|\.]] [\-\-without=GROUP[ GROUP\|\.\|\.\|\.]]
7
+ \fBbundle install\fR [\-\-binstubs[=DIRECTORY]] [\-\-clean] [\-\-deployment] [\-\-force] [\-\-frozen] [\-\-full\-index] [\-\-gemfile=GEMFILE] [\-\-jobs=NUMBER] [\-\-local] [\-\-no\-cache] [\-\-no\-prune] [\-\-path PATH] [\-\-prefer\-local] [\-\-quiet] [\-\-retry=NUMBER] [\-\-shebang=SHEBANG] [\-\-standalone[=GROUP[ GROUP\|\.\|\.\|\.]]] [\-\-system] [\-\-trust\-policy=TRUST\-POLICY] [\-\-target\-rbconfig=TARGET\-RBCONFIG] [\-\-with=GROUP[ GROUP\|\.\|\.\|\.]] [\-\-without=GROUP[ GROUP\|\.\|\.\|\.]]
8
8
  .SH "DESCRIPTION"
9
9
  Install the gems specified in your Gemfile(5)\. If this is the first time you run bundle install (and a \fBGemfile\.lock\fR does not exist), Bundler will fetch all remote sources, resolve dependencies and install all needed gems\.
10
10
  .P
@@ -29,8 +29,8 @@ In \fIdeployment mode\fR, Bundler will 'roll\-out' the bundle for production or
29
29
  .IP
30
30
  This option is deprecated in favor of the \fBdeployment\fR setting\.
31
31
  .TP
32
- \fB\-\-redownload\fR, \fB\-\-force\fR
33
- Force download every gem, even if the required versions are already available locally\.
32
+ \fB\-\-force\fR, \fB\-\-redownload\fR
33
+ Force reinstalling every gem, even if already installed\.
34
34
  .TP
35
35
  \fB\-\-frozen\fR
36
36
  Do not allow the Gemfile\.lock to be updated after this install\. Exits non\-zero if there are going to be changes to the Gemfile\.lock\.
@@ -6,6 +6,7 @@ bundle-install(1) -- Install the dependencies specified in your Gemfile
6
6
  `bundle install` [--binstubs[=DIRECTORY]]
7
7
  [--clean]
8
8
  [--deployment]
9
+ [--force]
9
10
  [--frozen]
10
11
  [--full-index]
11
12
  [--gemfile=GEMFILE]
@@ -16,7 +17,6 @@ bundle-install(1) -- Install the dependencies specified in your Gemfile
16
17
  [--path PATH]
17
18
  [--prefer-local]
18
19
  [--quiet]
19
- [--redownload]
20
20
  [--retry=NUMBER]
21
21
  [--shebang=SHEBANG]
22
22
  [--standalone[=GROUP[ GROUP...]]]
@@ -80,9 +80,8 @@ automatically and that requires `bundler` to silently remember them. Since
80
80
 
81
81
  This option is deprecated in favor of the `deployment` setting.
82
82
 
83
- * `--redownload`, `--force`:
84
- Force download every gem, even if the required versions are already available
85
- locally.
83
+ * `--force`, `--redownload`:
84
+ Force reinstalling every gem, even if already installed.
86
85
 
87
86
  * `--frozen`:
88
87
  Do not allow the Gemfile.lock to be updated after this install. Exits
@@ -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\-ISSUE" "1" "March 2025" ""
3
+ .TH "BUNDLE\-ISSUE" "1" "July 2025" ""
4
4
  .SH "NAME"
5
5
  \fBbundle\-issue\fR \- Get help reporting Bundler issues
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\-LICENSES" "1" "March 2025" ""
3
+ .TH "BUNDLE\-LICENSES" "1" "July 2025" ""
4
4
  .SH "NAME"
5
5
  \fBbundle\-licenses\fR \- Print the license of all gems in the bundle
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\-LIST" "1" "March 2025" ""
3
+ .TH "BUNDLE\-LIST" "1" "July 2025" ""
4
4
  .SH "NAME"
5
5
  \fBbundle\-list\fR \- List all the gems in the bundle
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\-LOCK" "1" "March 2025" ""
3
+ .TH "BUNDLE\-LOCK" "1" "July 2025" ""
4
4
  .SH "NAME"
5
5
  \fBbundle\-lock\fR \- Creates / Updates a lockfile without installing
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\-OPEN" "1" "March 2025" ""
3
+ .TH "BUNDLE\-OPEN" "1" "July 2025" ""
4
4
  .SH "NAME"
5
5
  \fBbundle\-open\fR \- Opens the source directory for a gem in your bundle
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\-OUTDATED" "1" "March 2025" ""
3
+ .TH "BUNDLE\-OUTDATED" "1" "July 2025" ""
4
4
  .SH "NAME"
5
5
  \fBbundle\-outdated\fR \- List installed gems with newer versions available
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\-PLATFORM" "1" "March 2025" ""
3
+ .TH "BUNDLE\-PLATFORM" "1" "July 2025" ""
4
4
  .SH "NAME"
5
5
  \fBbundle\-platform\fR \- Displays platform compatibility 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\-PLUGIN" "1" "March 2025" ""
3
+ .TH "BUNDLE\-PLUGIN" "1" "July 2025" ""
4
4
  .SH "NAME"
5
5
  \fBbundle\-plugin\fR \- Manage Bundler plugins
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\-PRISTINE" "1" "March 2025" ""
3
+ .TH "BUNDLE\-PRISTINE" "1" "July 2025" ""
4
4
  .SH "NAME"
5
5
  \fBbundle\-pristine\fR \- Restores installed gems to their pristine condition
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\-REMOVE" "1" "March 2025" ""
3
+ .TH "BUNDLE\-REMOVE" "1" "July 2025" ""
4
4
  .SH "NAME"
5
5
  \fBbundle\-remove\fR \- Removes gems from the 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\-SHOW" "1" "March 2025" ""
3
+ .TH "BUNDLE\-SHOW" "1" "July 2025" ""
4
4
  .SH "NAME"
5
5
  \fBbundle\-show\fR \- Shows all the gems in your bundle, or the path to a gem
6
6
  .SH "SYNOPSIS"
@@ -1,10 +1,10 @@
1
1
  .\" generated with Ronn-NG/v0.10.1
2
2
  .\" http://github.com/apjanke/ronn-ng/tree/0.10.1
3
- .TH "BUNDLE\-UPDATE" "1" "March 2025" ""
3
+ .TH "BUNDLE\-UPDATE" "1" "July 2025" ""
4
4
  .SH "NAME"
5
5
  \fBbundle\-update\fR \- Update your gems to the latest available versions
6
6
  .SH "SYNOPSIS"
7
- \fBbundle update\fR \fI*gems\fR [\-\-all] [\-\-group=NAME] [\-\-source=NAME] [\-\-local] [\-\-ruby] [\-\-bundler[=VERSION]] [\-\-full\-index] [\-\-gemfile=GEMFILE] [\-\-jobs=NUMBER] [\-\-quiet] [\-\-patch|\-\-minor|\-\-major] [\-\-pre] [\-\-redownload] [\-\-strict] [\-\-conservative]
7
+ \fBbundle update\fR \fI*gems\fR [\-\-all] [\-\-group=NAME] [\-\-source=NAME] [\-\-local] [\-\-ruby] [\-\-bundler[=VERSION]] [\-\-force] [\-\-full\-index] [\-\-gemfile=GEMFILE] [\-\-jobs=NUMBER] [\-\-quiet] [\-\-patch|\-\-minor|\-\-major] [\-\-pre] [\-\-strict] [\-\-conservative]
8
8
  .SH "DESCRIPTION"
9
9
  Update the gems specified (all gems, if \fB\-\-all\fR flag is used), ignoring the previously installed gems specified in the \fBGemfile\.lock\fR\. In general, you should use bundle install(1) \fIbundle\-install\.1\.html\fR to install the same exact gems and versions across machines\.
10
10
  .P
@@ -29,6 +29,9 @@ Update the locked version of Ruby to the current version of Ruby\.
29
29
  \fB\-\-bundler[=BUNDLER]\fR
30
30
  Update the locked version of bundler to the invoked bundler version\.
31
31
  .TP
32
+ \fB\-\-force\fR, \fB\-\-redownload\fR
33
+ Force reinstalling every gem, even if already installed\.
34
+ .TP
32
35
  \fB\-\-full\-index\fR
33
36
  Fall back to using the single\-file index of all gems\.
34
37
  .TP
@@ -44,9 +47,6 @@ Retry failed network or git requests for \fInumber\fR times\.
44
47
  \fB\-\-quiet\fR
45
48
  Only output warnings and errors\.
46
49
  .TP
47
- \fB\-\-redownload\fR, \fB\-\-force\fR
48
- Force downloading every gem\.
49
- .TP
50
50
  \fB\-\-patch\fR
51
51
  Prefer updating only to next patch version\.
52
52
  .TP
@@ -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" "March 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" "March 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" "March 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" "March 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
 
@@ -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
 
@@ -14,8 +14,6 @@ module Bundler
14
14
  require_relative "resolver/root"
15
15
  require_relative "resolver/strategy"
16
16
 
17
- include GemHelpers
18
-
19
17
  def initialize(base, gem_version_promoter, most_specific_locked_platform = nil)
20
18
  @source_requirements = base.source_requirements
21
19
  @base = base
@@ -273,7 +271,7 @@ module Bundler
273
271
  next groups if platform_specs.all?(&:empty?)
274
272
  end
275
273
 
276
- ruby_specs = select_best_platform_match(specs, Gem::Platform::RUBY)
274
+ ruby_specs = MatchPlatform.select_best_platform_match(specs, Gem::Platform::RUBY)
277
275
  ruby_group = Resolver::SpecGroup.new(ruby_specs)
278
276
 
279
277
  unless ruby_group.empty?