bundler 4.0.10 → 4.0.20

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 (106) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +174 -0
  3. data/bundler.gemspec +2 -2
  4. data/lib/bundler/build_metadata.rb +2 -2
  5. data/lib/bundler/cli/add.rb +3 -0
  6. data/lib/bundler/cli/check.rb +1 -3
  7. data/lib/bundler/cli/common.rb +17 -0
  8. data/lib/bundler/cli/config.rb +8 -3
  9. data/lib/bundler/cli/doctor/diagnose.rb +1 -1
  10. data/lib/bundler/cli/exec.rb +15 -1
  11. data/lib/bundler/cli/gem.rb +2 -3
  12. data/lib/bundler/cli/init.rb +4 -0
  13. data/lib/bundler/cli/install.rb +4 -0
  14. data/lib/bundler/cli/issue.rb +2 -2
  15. data/lib/bundler/cli/lock.rb +10 -2
  16. data/lib/bundler/cli/open.rb +12 -2
  17. data/lib/bundler/cli/outdated.rb +76 -6
  18. data/lib/bundler/cli/update.rb +3 -0
  19. data/lib/bundler/cli.rb +21 -15
  20. data/lib/bundler/compact_index_client/cache.rb +11 -0
  21. data/lib/bundler/compact_index_client/cache_file.rb +1 -1
  22. data/lib/bundler/compact_index_client/parser.rb +4 -1
  23. data/lib/bundler/definition.rb +64 -15
  24. data/lib/bundler/dsl.rb +11 -4
  25. data/lib/bundler/endpoint_specification.rb +30 -2
  26. data/lib/bundler/fetcher/base.rb +3 -0
  27. data/lib/bundler/fetcher/compact_index.rb +13 -0
  28. data/lib/bundler/fetcher/gem_remote_fetcher.rb +2 -0
  29. data/lib/bundler/fetcher.rb +12 -2
  30. data/lib/bundler/gem_helper.rb +2 -2
  31. data/lib/bundler/installer/parallel_installer.rb +68 -23
  32. data/lib/bundler/installer.rb +18 -1
  33. data/lib/bundler/lockfile_generator.rb +55 -1
  34. data/lib/bundler/lockfile_parser.rb +23 -1
  35. data/lib/bundler/man/bundle-add.1 +6 -3
  36. data/lib/bundler/man/bundle-add.1.ronn +7 -2
  37. data/lib/bundler/man/bundle-binstubs.1 +1 -1
  38. data/lib/bundler/man/bundle-cache.1 +4 -1
  39. data/lib/bundler/man/bundle-cache.1.ronn +6 -0
  40. data/lib/bundler/man/bundle-check.1 +1 -1
  41. data/lib/bundler/man/bundle-clean.1 +1 -1
  42. data/lib/bundler/man/bundle-config.1 +121 -157
  43. data/lib/bundler/man/bundle-config.1.ronn +38 -6
  44. data/lib/bundler/man/bundle-console.1 +3 -3
  45. data/lib/bundler/man/bundle-console.1.ronn +2 -2
  46. data/lib/bundler/man/bundle-doctor.1 +1 -1
  47. data/lib/bundler/man/bundle-env.1 +1 -1
  48. data/lib/bundler/man/bundle-exec.1 +1 -1
  49. data/lib/bundler/man/bundle-fund.1 +1 -1
  50. data/lib/bundler/man/bundle-gem.1 +1 -1
  51. data/lib/bundler/man/bundle-help.1 +1 -1
  52. data/lib/bundler/man/bundle-info.1 +1 -1
  53. data/lib/bundler/man/bundle-init.1 +2 -2
  54. data/lib/bundler/man/bundle-init.1.ronn +1 -1
  55. data/lib/bundler/man/bundle-install.1 +5 -2
  56. data/lib/bundler/man/bundle-install.1.ronn +9 -1
  57. data/lib/bundler/man/bundle-issue.1 +1 -1
  58. data/lib/bundler/man/bundle-licenses.1 +1 -1
  59. data/lib/bundler/man/bundle-list.1 +1 -1
  60. data/lib/bundler/man/bundle-lock.1 +5 -2
  61. data/lib/bundler/man/bundle-lock.1.ronn +6 -0
  62. data/lib/bundler/man/bundle-open.1 +1 -1
  63. data/lib/bundler/man/bundle-outdated.1 +17 -14
  64. data/lib/bundler/man/bundle-outdated.1.ronn +25 -12
  65. data/lib/bundler/man/bundle-platform.1 +5 -1
  66. data/lib/bundler/man/bundle-platform.1.ronn +4 -0
  67. data/lib/bundler/man/bundle-plugin.1 +2 -2
  68. data/lib/bundler/man/bundle-plugin.1.ronn +1 -1
  69. data/lib/bundler/man/bundle-pristine.1 +1 -1
  70. data/lib/bundler/man/bundle-remove.1 +1 -1
  71. data/lib/bundler/man/bundle-show.1 +1 -1
  72. data/lib/bundler/man/bundle-update.1 +5 -2
  73. data/lib/bundler/man/bundle-update.1.ronn +8 -0
  74. data/lib/bundler/man/bundle-version.1 +1 -1
  75. data/lib/bundler/man/bundle.1 +23 -2
  76. data/lib/bundler/man/bundle.1.ronn +22 -1
  77. data/lib/bundler/man/gemfile.5 +14 -3
  78. data/lib/bundler/man/gemfile.5.ronn +23 -2
  79. data/lib/bundler/mirror.rb +7 -7
  80. data/lib/bundler/plugin/unloaded_source.rb +25 -0
  81. data/lib/bundler/plugin.rb +12 -6
  82. data/lib/bundler/remote_specification.rb +1 -1
  83. data/lib/bundler/resolver/base.rb +9 -0
  84. data/lib/bundler/resolver.rb +116 -2
  85. data/lib/bundler/rubygems_ext.rb +22 -0
  86. data/lib/bundler/rubygems_gem_installer.rb +35 -2
  87. data/lib/bundler/runtime.rb +11 -11
  88. data/lib/bundler/self_manager.rb +6 -1
  89. data/lib/bundler/settings.rb +1 -0
  90. data/lib/bundler/shared_helpers.rb +21 -1
  91. data/lib/bundler/source/git/git_proxy.rb +83 -10
  92. data/lib/bundler/source/git.rb +4 -4
  93. data/lib/bundler/source/metadata.rb +4 -0
  94. data/lib/bundler/source/path.rb +4 -3
  95. data/lib/bundler/source/rubygems/remote.rb +12 -2
  96. data/lib/bundler/source/rubygems.rb +81 -13
  97. data/lib/bundler/source_list.rb +44 -3
  98. data/lib/bundler/spec_set.rb +2 -2
  99. data/lib/bundler/stub_specification.rb +3 -1
  100. data/lib/bundler/templates/newgem/newgem.gemspec.tt +8 -2
  101. data/lib/bundler/vendored_tsort.rb +19 -2
  102. data/lib/bundler/version.rb +1 -1
  103. data/lib/bundler.rb +26 -6
  104. metadata +5 -6
  105. data/lib/bundler/vendor/tsort/LICENSE.txt +0 -22
  106. data/lib/bundler/vendor/tsort/lib/tsort.rb +0 -455
@@ -133,10 +133,40 @@ learn more about their operation in [bundle install(1)](bundle-install.1.html).
133
133
  Defaults to `vendor/cache`.
134
134
  * `clean` (`BUNDLE_CLEAN`):
135
135
  Whether Bundler should run `bundle clean` automatically after
136
- `bundle install`. Defaults to `true` in Bundler 4, as long as `path` is not
136
+ `bundle install`. Defaults to `true` in Bundler 5, as long as `path` is not
137
137
  explicitly configured.
138
138
  * `console` (`BUNDLE_CONSOLE`):
139
139
  The console that `bundle console` starts. Defaults to `irb`.
140
+ * `cooldown` (`BUNDLE_COOLDOWN`):
141
+ Number of days a published gem version must age before bundler will
142
+ resolve to it. Defaults to unset (no cooldown). Pass `0` to disable
143
+ cooldown for an individual run.
144
+
145
+ The effective cooldown for any given gem is resolved from three
146
+ layers, highest precedence first:
147
+
148
+ 1. CLI flag `--cooldown N` on `install`, `update`, `add`, and
149
+ `outdated`.
150
+ 2. This setting (`bundle config set cooldown N` or
151
+ `BUNDLE_COOLDOWN=N`).
152
+ 3. The per-source `cooldown:` keyword in the Gemfile, such as
153
+ `source "https://rubygems.org", cooldown: 7`.
154
+
155
+ The CLI flag and this setting apply uniformly to every source,
156
+ including ones declared with their own `cooldown:` value. To keep a
157
+ private registry permanently exempt while still cooling down public
158
+ gems, declare `source "https://internal", cooldown: 0` in the
159
+ Gemfile; remember that `--cooldown N` on the command line will
160
+ still override it for that single run.
161
+
162
+ Cooldown filtering depends on the gem server providing a per-version
163
+ `created_at` timestamp in the v2 compact-index format. Versions
164
+ without that metadata - older gem servers, historical entries that
165
+ predate the v2 cutover on `rubygems.org`, or private registries that
166
+ still emit the v1 format - are treated as outside the cooldown
167
+ window and remain resolvable. If you rely on cooldown for
168
+ supply-chain protection, confirm that the gem server emits
169
+ `created_at` in its `/info/<gem>` responses.
140
170
  * `default_cli_command` (`BUNDLE_DEFAULT_CLI_COMMAND`):
141
171
  The command that running `bundle` without arguments should run. Defaults to
142
172
  `cli_help` since Bundler 4, but can also be `install` which was the previous
@@ -200,6 +230,8 @@ learn more about their operation in [bundle install(1)](bundle-install.1.html).
200
230
  Gemfile to disable lockfile creation entirely (see gemfile(5)).
201
231
  * `lockfile_checksums` (`BUNDLE_LOCKFILE_CHECKSUMS`):
202
232
  Whether Bundler should include a checksums section in new lockfiles, to protect from compromised gem sources. Defaults to true.
233
+ Bundler's own checksum is only included when its `.gem` file is cached, which
234
+ may not be the case when Bundler is installed as a default gem.
203
235
  * `no_install` (`BUNDLE_NO_INSTALL`):
204
236
  Whether `bundle package` should skip installing gems.
205
237
  * `no_prune` (`BUNDLE_NO_PRUNE`):
@@ -213,17 +245,17 @@ learn more about their operation in [bundle install(1)](bundle-install.1.html).
213
245
  The location on disk where all gems in your bundle will be located regardless
214
246
  of `$GEM_HOME` or `$GEM_PATH` values. Bundle gems not found in this location
215
247
  will be installed by `bundle install`. When not set, Bundler install by
216
- default to a `.bundle` directory relative to repository root in Bundler 4,
217
- and to the default system path (`Gem.dir`) before Bundler 4. That means that
218
- before Bundler 4, Bundler shares this location with Rubygems, and `gem
248
+ default to a `.bundle` directory relative to repository root in Bundler 5,
249
+ and to the default system path (`Gem.dir`) before Bundler 5. That means that
250
+ before Bundler 5, Bundler shares this location with Rubygems, and `gem
219
251
  install ...` will have gems installed in the same location and therefore,
220
252
  gems installed without `path` set will show up by calling `gem list`. This
221
- will not be the case in Bundler 4.
253
+ will not be the case in Bundler 5.
222
254
  * `path.system` (`BUNDLE_PATH__SYSTEM`):
223
255
  Whether Bundler will install gems into the default system path (`Gem.dir`).
224
256
  * `plugins` (`BUNDLE_PLUGINS`):
225
257
  Enable Bundler's experimental plugin system.
226
- * `prefer_patch` (BUNDLE_PREFER_PATCH):
258
+ * `prefer_patch` (`BUNDLE_PREFER_PATCH`):
227
259
  Prefer updating only to next patch version during updates. Makes `bundle update` calls equivalent to `bundler update --patch`.
228
260
  * `redirect` (`BUNDLE_REDIRECT`):
229
261
  The number of redirects allowed for network requests. Defaults to `5`.
@@ -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\-CONSOLE" "1" "March 2026" ""
3
+ .TH "BUNDLE\-CONSOLE" "1" "April 2026" ""
4
4
  .SH "NAME"
5
5
  \fBbundle\-console\fR \- Open an IRB session with the bundle pre\-loaded
6
6
  .SH "SYNOPSIS"
@@ -8,7 +8,7 @@
8
8
  .SH "DESCRIPTION"
9
9
  Starts an interactive Ruby console session in the context of the current bundle\.
10
10
  .P
11
- If no \fBGROUP\fR is specified, all gems in the \fBdefault\fR group in the Gemfile(5) \fIhttps://bundler\.io/man/gemfile\.5\.html\fR are preliminarily loaded\.
11
+ If no \fBGROUP\fR is specified, all gems in the \fBdefault\fR group in the Gemfile(5) \fIhttps://guides\.rubygems\.org/gemfile/\fR are preliminarily loaded\.
12
12
  .P
13
13
  If \fBGROUP\fR is specified, all gems in the given group in the Gemfile in addition to the gems in \fBdefault\fR group are loaded\. Even if the given group does not exist in the Gemfile, IRB console starts without any warning or error\.
14
14
  .P
@@ -30,4 +30,4 @@ Resolving dependencies\|\.\|\.\|\.
30
30
  [1] pry(main)>
31
31
  .fi
32
32
  .SH "SEE ALSO"
33
- Gemfile(5) \fIhttps://bundler\.io/man/gemfile\.5\.html\fR
33
+ Gemfile(5) \fIhttps://guides\.rubygems\.org/gemfile/\fR
@@ -9,7 +9,7 @@ bundle-console(1) -- Open an IRB session with the bundle pre-loaded
9
9
 
10
10
  Starts an interactive Ruby console session in the context of the current bundle.
11
11
 
12
- If no `GROUP` is specified, all gems in the `default` group in the [Gemfile(5)](https://bundler.io/man/gemfile.5.html) are
12
+ If no `GROUP` is specified, all gems in the `default` group in the [Gemfile(5)](https://guides.rubygems.org/gemfile/) are
13
13
  preliminarily loaded.
14
14
 
15
15
  If `GROUP` is specified, all gems in the given group in the Gemfile in addition
@@ -36,4 +36,4 @@ the shell from the following:
36
36
 
37
37
  ## SEE ALSO
38
38
 
39
- [Gemfile(5)](https://bundler.io/man/gemfile.5.html)
39
+ [Gemfile(5)](https://guides.rubygems.org/gemfile/)
@@ -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\-DOCTOR" "1" "March 2026" ""
3
+ .TH "BUNDLE\-DOCTOR" "1" "April 2026" ""
4
4
  .SH "NAME"
5
5
  \fBbundle\-doctor\fR \- Checks the bundle for common problems
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\-ENV" "1" "March 2026" ""
3
+ .TH "BUNDLE\-ENV" "1" "April 2026" ""
4
4
  .SH "NAME"
5
5
  \fBbundle\-env\fR \- Print information about the environment Bundler is running under
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\-EXEC" "1" "March 2026" ""
3
+ .TH "BUNDLE\-EXEC" "1" "April 2026" ""
4
4
  .SH "NAME"
5
5
  \fBbundle\-exec\fR \- Execute a command in the context of 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\-FUND" "1" "March 2026" ""
3
+ .TH "BUNDLE\-FUND" "1" "April 2026" ""
4
4
  .SH "NAME"
5
5
  \fBbundle\-fund\fR \- Lists information about gems seeking funding assistance
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\-GEM" "1" "March 2026" ""
3
+ .TH "BUNDLE\-GEM" "1" "April 2026" ""
4
4
  .SH "NAME"
5
5
  \fBbundle\-gem\fR \- Generate a project skeleton for creating a rubygem
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\-HELP" "1" "March 2026" ""
3
+ .TH "BUNDLE\-HELP" "1" "April 2026" ""
4
4
  .SH "NAME"
5
5
  \fBbundle\-help\fR \- Displays detailed help for each subcommand
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\-INFO" "1" "March 2026" ""
3
+ .TH "BUNDLE\-INFO" "1" "April 2026" ""
4
4
  .SH "NAME"
5
5
  \fBbundle\-info\fR \- Show information for the given 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\-INIT" "1" "March 2026" ""
3
+ .TH "BUNDLE\-INIT" "1" "April 2026" ""
4
4
  .SH "NAME"
5
5
  \fBbundle\-init\fR \- Generates a Gemfile into the current working directory
6
6
  .SH "SYNOPSIS"
@@ -17,4 +17,4 @@ Use the specified name for the gemfile instead of \fBGemfile\fR
17
17
  .SH "FILES"
18
18
  Included in the default [\fBGemfile(5)\fR][Gemfile(5)] generated is the line \fB# frozen_string_literal: true\fR\. This is a magic comment supported for the first time in Ruby 2\.3\. The presence of this line results in all string literals in the file being implicitly frozen\.
19
19
  .SH "SEE ALSO"
20
- Gemfile(5) \fIhttps://bundler\.io/man/gemfile\.5\.html\fR
20
+ Gemfile(5) \fIhttps://guides\.rubygems\.org/gemfile/\fR
@@ -29,4 +29,4 @@ results in all string literals in the file being implicitly frozen.
29
29
 
30
30
  ## SEE ALSO
31
31
 
32
- [Gemfile(5)](https://bundler.io/man/gemfile.5.html)
32
+ [Gemfile(5)](https://guides.rubygems.org/gemfile/)
@@ -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 2026" ""
3
+ .TH "BUNDLE\-INSTALL" "1" "April 2026" ""
4
4
  .SH "NAME"
5
5
  \fBbundle\-install\fR \- Install the dependencies specified in your Gemfile
6
6
  .SH "SYNOPSIS"
7
- \fBbundle install\fR [\-\-force] [\-\-full\-index] [\-\-gemfile=GEMFILE] [\-\-jobs=NUMBER] [\-\-local] [\-\-lockfile=LOCKFILE] [\-\-no\-cache] [\-\-no\-lock] [\-\-prefer\-local] [\-\-quiet] [\-\-retry=NUMBER] [\-\-standalone[=GROUP[ GROUP\|\.\|\.\|\.]]] [\-\-trust\-policy=TRUST\-POLICY] [\-\-target\-rbconfig=TARGET\-RBCONFIG]
7
+ \fBbundle install\fR [\-\-cooldown=NUMBER] [\-\-force] [\-\-full\-index] [\-\-gemfile=GEMFILE] [\-\-jobs=NUMBER] [\-\-local] [\-\-lockfile=LOCKFILE] [\-\-no\-cache] [\-\-no\-lock] [\-\-prefer\-local] [\-\-quiet] [\-\-retry=NUMBER] [\-\-standalone[=GROUP[ GROUP\|\.\|\.\|\.]]] [\-\-trust\-policy=TRUST\-POLICY] [\-\-target\-rbconfig=TARGET\-RBCONFIG]
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
@@ -13,6 +13,9 @@ If a \fBGemfile\.lock\fR does exist, and you have not updated your Gemfile(5), B
13
13
  If a \fBGemfile\.lock\fR does exist, and you have updated your Gemfile(5), Bundler will use the dependencies in the \fBGemfile\.lock\fR for all gems that you did not update, but will re\-resolve the dependencies of gems that you did update\. You can find more information about this update process below under \fICONSERVATIVE UPDATING\fR\.
14
14
  .SH "OPTIONS"
15
15
  .TP
16
+ \fB\-\-cooldown=<number>\fR
17
+ Only consider gem versions published at least \fInumber\fR days ago when resolving\. Pass \fB0\fR to disable cooldown for this run, overriding any per\-source or global configuration\. See \fBcooldown\fR in bundle\-config(1) for details on the precedence between the CLI flag, Bundler config, and Gemfile per\-source settings\.
18
+ .TP
16
19
  \fB\-\-force\fR, \fB\-\-redownload\fR
17
20
  Force reinstalling every gem, even if already installed\.
18
21
  .TP
@@ -3,7 +3,8 @@ bundle-install(1) -- Install the dependencies specified in your Gemfile
3
3
 
4
4
  ## SYNOPSIS
5
5
 
6
- `bundle install` [--force]
6
+ `bundle install` [--cooldown=NUMBER]
7
+ [--force]
7
8
  [--full-index]
8
9
  [--gemfile=GEMFILE]
9
10
  [--jobs=NUMBER]
@@ -37,6 +38,13 @@ update process below under [CONSERVATIVE UPDATING][].
37
38
 
38
39
  ## OPTIONS
39
40
 
41
+ * `--cooldown=<number>`:
42
+ Only consider gem versions published at least <number> days ago when
43
+ resolving. Pass `0` to disable cooldown for this run, overriding any
44
+ per-source or global configuration. See `cooldown` in bundle-config(1)
45
+ for details on the precedence between the CLI flag, Bundler config,
46
+ and Gemfile per-source settings.
47
+
40
48
  * `--force`, `--redownload`:
41
49
  Force reinstalling every gem, even if already installed.
42
50
 
@@ -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 2026" ""
3
+ .TH "BUNDLE\-ISSUE" "1" "April 2026" ""
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 2026" ""
3
+ .TH "BUNDLE\-LICENSES" "1" "April 2026" ""
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 2026" ""
3
+ .TH "BUNDLE\-LIST" "1" "April 2026" ""
4
4
  .SH "NAME"
5
5
  \fBbundle\-list\fR \- List all the gems in the bundle
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\-LOCK" "1" "March 2026" ""
3
+ .TH "BUNDLE\-LOCK" "1" "April 2026" ""
4
4
  .SH "NAME"
5
5
  \fBbundle\-lock\fR \- Creates / Updates a lockfile without installing
6
6
  .SH "SYNOPSIS"
7
- \fBbundle lock\fR [\-\-update] [\-\-bundler[=BUNDLER]] [\-\-local] [\-\-print] [\-\-lockfile=PATH] [\-\-full\-index] [\-\-gemfile=GEMFILE] [\-\-add\-checksums] [\-\-add\-platform] [\-\-remove\-platform] [\-\-normalize\-platforms] [\-\-patch] [\-\-minor] [\-\-major] [\-\-pre] [\-\-strict] [\-\-conservative]
7
+ \fBbundle lock\fR [\-\-update] [\-\-bundler[=BUNDLER]] [\-\-local] [\-\-print] [\-\-lockfile=PATH] [\-\-full\-index] [\-\-gemfile=GEMFILE] [\-\-add\-checksums] [\-\-add\-platform] [\-\-remove\-platform] [\-\-normalize\-platforms] [\-\-patch] [\-\-minor] [\-\-major] [\-\-pre] [\-\-strict] [\-\-conservative] [\-\-cooldown=NUMBER]
8
8
  .SH "DESCRIPTION"
9
9
  Lock the gems specified in Gemfile\.
10
10
  .SH "OPTIONS"
@@ -59,6 +59,9 @@ If updating, do not allow any gem to be updated past latest \-\-patch | \-\-mino
59
59
  .TP
60
60
  \fB\-\-conservative\fR
61
61
  If updating, use bundle install conservative update behavior and do not allow shared dependencies to be updated\.
62
+ .TP
63
+ \fB\-\-cooldown=<number>\fR
64
+ Only consider gem versions published at least \fInumber\fR days ago when resolving\. Pass \fB0\fR to disable cooldown for this run, overriding any per\-source or global configuration\. See \fBcooldown\fR in bundle\-config(1)\.
62
65
  .SH "UPDATING ALL GEMS"
63
66
  If you run \fBbundle lock\fR with \fB\-\-update\fR option without list of gems, bundler will ignore any previously installed gems and resolve all dependencies again based on the latest versions of all gems available in the sources\.
64
67
  .SH "UPDATING A LIST OF GEMS"
@@ -20,6 +20,7 @@ bundle-lock(1) -- Creates / Updates a lockfile without installing
20
20
  [--pre]
21
21
  [--strict]
22
22
  [--conservative]
23
+ [--cooldown=NUMBER]
23
24
 
24
25
  ## DESCRIPTION
25
26
 
@@ -84,6 +85,11 @@ Lock the gems specified in Gemfile.
84
85
  * `--conservative`:
85
86
  If updating, use bundle install conservative update behavior and do not allow shared dependencies to be updated.
86
87
 
88
+ * `--cooldown=<number>`:
89
+ Only consider gem versions published at least <number> days ago when
90
+ resolving. Pass `0` to disable cooldown for this run, overriding any
91
+ per-source or global configuration. See `cooldown` in bundle-config(1).
92
+
87
93
  ## UPDATING ALL GEMS
88
94
 
89
95
  If you run `bundle lock` with `--update` option without list of gems, bundler will
@@ -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 2026" ""
3
+ .TH "BUNDLE\-OPEN" "1" "April 2026" ""
4
4
  .SH "NAME"
5
5
  \fBbundle\-open\fR \- Opens the source directory for a gem in your bundle
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\-OUTDATED" "1" "March 2026" ""
3
+ .TH "BUNDLE\-OUTDATED" "1" "April 2026" ""
4
4
  .SH "NAME"
5
5
  \fBbundle\-outdated\fR \- List installed gems with newer versions available
6
6
  .SH "SYNOPSIS"
7
- \fBbundle outdated\fR [GEM] [\-\-local] [\-\-pre] [\-\-source] [\-\-filter\-strict | \-\-strict] [\-\-update\-strict] [\-\-parseable | \-\-porcelain] [\-\-group=GROUP] [\-\-groups] [\-\-patch|\-\-minor|\-\-major] [\-\-filter\-major] [\-\-filter\-minor] [\-\-filter\-patch] [\-\-only\-explicit]
7
+ \fBbundle outdated\fR [GEM] [\-\-local] [\-\-pre] [\-\-source] [\-\-filter\-strict | \-\-strict] [\-\-update\-strict] [\-\-parseable | \-\-porcelain] [\-\-group=GROUP] [\-\-groups] [\-\-patch|\-\-minor|\-\-major] [\-\-filter\-major] [\-\-filter\-minor] [\-\-filter\-patch] [\-\-only\-explicit] [\-\-cooldown=NUMBER]
8
8
  .SH "DESCRIPTION"
9
9
  Outdated lists the names and versions of gems that have a newer version available in the given source\. Calling outdated with [GEM [GEM]] will only check for newer versions of the given gems\. Prerelease gems are ignored by default\. If your gems are up to date, Bundler will exit with a status of 0\. Otherwise, it will exit 1\.
10
10
  .SH "OPTIONS"
@@ -53,6 +53,9 @@ Only list patch newer versions\.
53
53
  .TP
54
54
  \fB\-\-only\-explicit\fR
55
55
  Only list gems specified in your Gemfile, not their dependencies\.
56
+ .TP
57
+ \fB\-\-cooldown=<number>\fR
58
+ Annotate (rather than hide) versions that are still inside the cooldown window of \fInumber\fR days\. The prose output appends "in cooldown for Nd more days" and the table form adds "(cooldown Nd)" to the Latest column\. When a version outside the window is newer than the installed one, the prose output also appends "newest out of cooldown X" and the table form becomes "(cooldown Nd, X out of cooldown)"\. With \fB\-\-filter\-strict\fR (or \fB\-\-patch\fR, \fB\-\-minor\fR, \fB\-\-major\fR, which imply it), "newest" is already the cooldown\-filtered resolved version, so none of these annotations appear\. See \fBcooldown\fR in bundle\-config(1)\.
56
59
  .SH "PATCH LEVEL OPTIONS"
57
60
  See bundle update(1) \fIbundle\-update\.1\.html\fR for details\.
58
61
  .SH "FILTERING OUTPUT"
@@ -61,42 +64,42 @@ The 3 filtering options do not affect the resolution of versions, merely what ve
61
64
  If the regular output shows the following:
62
65
  .IP "" 4
63
66
  .nf
64
- * Gem Current Latest Requested Groups
65
- * faker 1\.6\.5 1\.6\.6 ~> 1\.4 development, test
66
- * hashie 1\.2\.0 3\.4\.6 = 1\.2\.0 default
67
- * headless 2\.2\.3 2\.3\.1 = 2\.2\.3 test
67
+ * Gem Current Latest Requested Groups Release Date
68
+ * faker 1\.6\.5 1\.6\.6 ~> 1\.4 development, test 2024\-02\-05
69
+ * hashie 1\.2\.0 3\.4\.6 = 1\.2\.0 default 2023\-11\-10
70
+ * headless 2\.2\.3 2\.3\.1 = 2\.2\.3 test 2022\-08\-19
68
71
  .fi
69
72
  .IP "" 0
70
73
  .P
71
74
  \fB\-\-filter\-major\fR would only show:
72
75
  .IP "" 4
73
76
  .nf
74
- * Gem Current Latest Requested Groups
75
- * hashie 1\.2\.0 3\.4\.6 = 1\.2\.0 default
77
+ * Gem Current Latest Requested Groups Release Date
78
+ * hashie 1\.2\.0 3\.4\.6 = 1\.2\.0 default 2023\-11\-10
76
79
  .fi
77
80
  .IP "" 0
78
81
  .P
79
82
  \fB\-\-filter\-minor\fR would only show:
80
83
  .IP "" 4
81
84
  .nf
82
- * Gem Current Latest Requested Groups
83
- * headless 2\.2\.3 2\.3\.1 = 2\.2\.3 test
85
+ * Gem Current Latest Requested Groups Release Date
86
+ * headless 2\.2\.3 2\.3\.1 = 2\.2\.3 test 2022\-08\-19
84
87
  .fi
85
88
  .IP "" 0
86
89
  .P
87
90
  \fB\-\-filter\-patch\fR would only show:
88
91
  .IP "" 4
89
92
  .nf
90
- * Gem Current Latest Requested Groups
91
- * faker 1\.6\.5 1\.6\.6 ~> 1\.4 development, test
93
+ * Gem Current Latest Requested Groups Release Date
94
+ * faker 1\.6\.5 1\.6\.6 ~> 1\.4 development, test 2024\-02\-05
92
95
  .fi
93
96
  .IP "" 0
94
97
  .P
95
98
  Filter options can be combined\. \fB\-\-filter\-minor\fR and \fB\-\-filter\-patch\fR would show:
96
99
  .IP "" 4
97
100
  .nf
98
- * Gem Current Latest Requested Groups
99
- * faker 1\.6\.5 1\.6\.6 ~> 1\.4 development, test
101
+ * Gem Current Latest Requested Groups Release Date
102
+ * faker 1\.6\.5 1\.6\.6 ~> 1\.4 development, test 2024\-02\-05
100
103
  .fi
101
104
  .IP "" 0
102
105
  .P
@@ -16,6 +16,7 @@ bundle-outdated(1) -- List installed gems with newer versions available
16
16
  [--filter-minor]
17
17
  [--filter-patch]
18
18
  [--only-explicit]
19
+ [--cooldown=NUMBER]
19
20
 
20
21
  ## DESCRIPTION
21
22
 
@@ -71,6 +72,18 @@ are up to date, Bundler will exit with a status of 0. Otherwise, it will exit 1.
71
72
  * `--only-explicit`:
72
73
  Only list gems specified in your Gemfile, not their dependencies.
73
74
 
75
+ * `--cooldown=<number>`:
76
+ Annotate (rather than hide) versions that are still inside the
77
+ cooldown window of <number> days. The prose output appends "in
78
+ cooldown for Nd more days" and the table form adds "(cooldown Nd)" to
79
+ the Latest column. When a version outside the window is newer than the
80
+ installed one, the prose output also appends "newest out of cooldown
81
+ X" and the table form becomes "(cooldown Nd, X out of cooldown)".
82
+ With `--filter-strict` (or `--patch`, `--minor`, `--major`, which
83
+ imply it), "newest" is already the cooldown-filtered resolved version,
84
+ so none of these annotations appear. See `cooldown` in
85
+ bundle-config(1).
86
+
74
87
  ## PATCH LEVEL OPTIONS
75
88
 
76
89
  See [bundle update(1)](bundle-update.1.html) for details.
@@ -82,29 +95,29 @@ in the output.
82
95
 
83
96
  If the regular output shows the following:
84
97
 
85
- * Gem Current Latest Requested Groups
86
- * faker 1.6.5 1.6.6 ~> 1.4 development, test
87
- * hashie 1.2.0 3.4.6 = 1.2.0 default
88
- * headless 2.2.3 2.3.1 = 2.2.3 test
98
+ * Gem Current Latest Requested Groups Release Date
99
+ * faker 1.6.5 1.6.6 ~> 1.4 development, test 2024-02-05
100
+ * hashie 1.2.0 3.4.6 = 1.2.0 default 2023-11-10
101
+ * headless 2.2.3 2.3.1 = 2.2.3 test 2022-08-19
89
102
 
90
103
  `--filter-major` would only show:
91
104
 
92
- * Gem Current Latest Requested Groups
93
- * hashie 1.2.0 3.4.6 = 1.2.0 default
105
+ * Gem Current Latest Requested Groups Release Date
106
+ * hashie 1.2.0 3.4.6 = 1.2.0 default 2023-11-10
94
107
 
95
108
  `--filter-minor` would only show:
96
109
 
97
- * Gem Current Latest Requested Groups
98
- * headless 2.2.3 2.3.1 = 2.2.3 test
110
+ * Gem Current Latest Requested Groups Release Date
111
+ * headless 2.2.3 2.3.1 = 2.2.3 test 2022-08-19
99
112
 
100
113
  `--filter-patch` would only show:
101
114
 
102
- * Gem Current Latest Requested Groups
103
- * faker 1.6.5 1.6.6 ~> 1.4 development, test
115
+ * Gem Current Latest Requested Groups Release Date
116
+ * faker 1.6.5 1.6.6 ~> 1.4 development, test 2024-02-05
104
117
 
105
118
  Filter options can be combined. `--filter-minor` and `--filter-patch` would show:
106
119
 
107
- * Gem Current Latest Requested Groups
108
- * faker 1.6.5 1.6.6 ~> 1.4 development, test
120
+ * Gem Current Latest Requested Groups Release Date
121
+ * faker 1.6.5 1.6.6 ~> 1.4 development, test 2024-02-05
109
122
 
110
123
  Combining all three `filter` options would be the same result as providing none of them.
@@ -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 2026" ""
3
+ .TH "BUNDLE\-PLATFORM" "1" "April 2026" ""
4
4
  .SH "NAME"
5
5
  \fBbundle\-platform\fR \- Displays platform compatibility information
6
6
  .SH "SYNOPSIS"
@@ -38,6 +38,8 @@ Your current platform satisfies the Ruby version requirement\.
38
38
  .IP "" 0
39
39
  .P
40
40
  \fBplatform\fR lists all the platforms in your \fBGemfile\.lock\fR as well as the \fBruby\fR directive if applicable from your Gemfile(5)\. It also lets you know if the \fBruby\fR directive requirement has been met\. If \fBruby\fR directive doesn't match the running Ruby VM, it tells you what part does not\.
41
+ .P
42
+ For a detailed explanation of how bundler handles platforms, see the \fBPLATFORMS\fR section in Gemfile(5)\.
41
43
  .SH "OPTIONS"
42
44
  .TP
43
45
  \fB\-\-ruby\fR
@@ -45,5 +47,7 @@ It will display the ruby directive information, so you don't have to parse it fr
45
47
  .SH "SEE ALSO"
46
48
  .IP "\(bu" 4
47
49
  bundle\-lock(1) \fIbundle\-lock\.1\.html\fR
50
+ .IP "\(bu" 4
51
+ Gemfile(5) \fIgemfile\.5\.html\fR
48
52
  .IP "" 0
49
53
 
@@ -38,6 +38,9 @@ If you run `bundle platform` on Ruby 3.1.2, it displays the following output:
38
38
  if the `ruby` directive requirement has been met. If `ruby` directive doesn't
39
39
  match the running Ruby VM, it tells you what part does not.
40
40
 
41
+ For a detailed explanation of how bundler handles platforms, see the
42
+ `PLATFORMS` section in Gemfile(5).
43
+
41
44
  ## OPTIONS
42
45
 
43
46
  * `--ruby`:
@@ -47,3 +50,4 @@ match the running Ruby VM, it tells you what part does not.
47
50
  ## SEE ALSO
48
51
 
49
52
  * [bundle-lock(1)](bundle-lock.1.html)
53
+ * [Gemfile(5)](gemfile.5.html)
@@ -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 2026" ""
3
+ .TH "BUNDLE\-PLUGIN" "1" "April 2026" ""
4
4
  .SH "NAME"
5
5
  \fBbundle\-plugin\fR \- Manage Bundler plugins
6
6
  .SH "SYNOPSIS"
@@ -71,6 +71,6 @@ Describe subcommands or one specific subcommand\.
71
71
  No options\.
72
72
  .SH "SEE ALSO"
73
73
  .IP "\(bu" 4
74
- How to write a Bundler plugin \fIhttps://bundler\.io/guides/bundler_plugins\.html\fR
74
+ How to write a Bundler plugin \fIhttps://guides\.rubygems\.org/bundler_plugins/\fR
75
75
  .IP "" 0
76
76
 
@@ -81,4 +81,4 @@ No options.
81
81
 
82
82
  ## SEE ALSO
83
83
 
84
- * [How to write a Bundler plugin](https://bundler.io/guides/bundler_plugins.html)
84
+ * [How to write a Bundler plugin](https://guides.rubygems.org/bundler_plugins/)
@@ -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 2026" ""
3
+ .TH "BUNDLE\-PRISTINE" "1" "April 2026" ""
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 2026" ""
3
+ .TH "BUNDLE\-REMOVE" "1" "April 2026" ""
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 2026" ""
3
+ .TH "BUNDLE\-SHOW" "1" "April 2026" ""
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 2026" ""
3
+ .TH "BUNDLE\-UPDATE" "1" "April 2026" ""
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]] [\-\-force] [\-\-full\-index] [\-\-gemfile=GEMFILE] [\-\-jobs=NUMBER] [\-\-quiet] [\-\-patch|\-\-minor|\-\-major] [\-\-pre] [\-\-strict] [\-\-conservative]
7
+ \fBbundle update\fR \fI*gems\fR [\-\-all] [\-\-group=NAME] [\-\-source=NAME] [\-\-local] [\-\-ruby] [\-\-bundler[=VERSION]] [\-\-cooldown=NUMBER] [\-\-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
@@ -64,6 +64,9 @@ Do not allow any gem to be updated past latest \fB\-\-patch\fR | \fB\-\-minor\fR
64
64
  .TP
65
65
  \fB\-\-conservative\fR
66
66
  Use bundle install conservative update behavior and do not allow indirect dependencies to be updated\.
67
+ .TP
68
+ \fB\-\-cooldown=<number>\fR
69
+ Only consider gem versions published at least \fInumber\fR days ago when resolving\. Pass \fB0\fR to disable cooldown for this run, overriding any per\-source or global configuration\. Combine with \fB\-\-conservative\fR to minimize transitive churn when bypassing cooldown for an urgent update\. See \fBcooldown\fR in bundle\-config(1)\.
67
70
  .SH "UPDATING ALL GEMS"
68
71
  If you run \fBbundle update \-\-all\fR, bundler will ignore any previously installed gems and resolve all dependencies again based on the latest versions of all gems available in the sources\.
69
72
  .P
@@ -9,6 +9,7 @@ bundle-update(1) -- Update your gems to the latest available versions
9
9
  [--local]
10
10
  [--ruby]
11
11
  [--bundler[=VERSION]]
12
+ [--cooldown=NUMBER]
12
13
  [--force]
13
14
  [--full-index]
14
15
  [--gemfile=GEMFILE]
@@ -91,6 +92,13 @@ gem.
91
92
  * `--conservative`:
92
93
  Use bundle install conservative update behavior and do not allow indirect dependencies to be updated.
93
94
 
95
+ * `--cooldown=<number>`:
96
+ Only consider gem versions published at least <number> days ago when
97
+ resolving. Pass `0` to disable cooldown for this run, overriding any
98
+ per-source or global configuration. Combine with `--conservative` to
99
+ minimize transitive churn when bypassing cooldown for an urgent
100
+ update. See `cooldown` in bundle-config(1).
101
+
94
102
  ## UPDATING ALL GEMS
95
103
 
96
104
  If you run `bundle update --all`, bundler will ignore
@@ -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 2026" ""
3
+ .TH "BUNDLE\-VERSION" "1" "April 2026" ""
4
4
  .SH "NAME"
5
5
  \fBbundle\-version\fR \- Prints Bundler version information
6
6
  .SH "SYNOPSIS"