bundler 2.6.9 → 4.0.11

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 (191) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +2229 -1879
  3. data/README.md +11 -11
  4. data/bundler.gemspec +5 -5
  5. data/lib/bundler/build_metadata.rb +10 -11
  6. data/lib/bundler/capistrano.rb +1 -19
  7. data/lib/bundler/checksum.rb +6 -0
  8. data/lib/bundler/cli/add.rb +10 -0
  9. data/lib/bundler/cli/cache.rb +1 -12
  10. data/lib/bundler/cli/common.rb +21 -4
  11. data/lib/bundler/cli/config.rb +1 -2
  12. data/lib/bundler/cli/console.rb +5 -0
  13. data/lib/bundler/cli/exec.rb +29 -4
  14. data/lib/bundler/cli/gem.rb +90 -64
  15. data/lib/bundler/cli/install.rb +15 -90
  16. data/lib/bundler/cli/issue.rb +2 -2
  17. data/lib/bundler/cli/list.rb +33 -2
  18. data/lib/bundler/cli/lock.rb +5 -5
  19. data/lib/bundler/cli/outdated.rb +1 -1
  20. data/lib/bundler/cli/plugin.rb +5 -1
  21. data/lib/bundler/cli/pristine.rb +5 -1
  22. data/lib/bundler/cli/show.rb +3 -7
  23. data/lib/bundler/cli/update.rb +5 -5
  24. data/lib/bundler/cli.rb +162 -127
  25. data/lib/bundler/compact_index_client.rb +1 -6
  26. data/lib/bundler/current_ruby.rb +17 -5
  27. data/lib/bundler/definition.rb +201 -117
  28. data/lib/bundler/dependency.rb +1 -1
  29. data/lib/bundler/deployment.rb +1 -64
  30. data/lib/bundler/digest.rb +1 -1
  31. data/lib/bundler/dsl.rb +48 -48
  32. data/lib/bundler/environment_preserver.rb +1 -0
  33. data/lib/bundler/errors.rb +1 -5
  34. data/lib/bundler/feature_flag.rb +5 -35
  35. data/lib/bundler/fetcher/compact_index.rb +1 -1
  36. data/lib/bundler/fetcher/dependency.rb +9 -2
  37. data/lib/bundler/fetcher/downloader.rb +33 -8
  38. data/lib/bundler/fetcher/gem_remote_fetcher.rb +6 -0
  39. data/lib/bundler/fetcher.rb +49 -19
  40. data/lib/bundler/friendly_errors.rb +4 -3
  41. data/lib/bundler/index.rb +7 -9
  42. data/lib/bundler/injector.rb +1 -2
  43. data/lib/bundler/inline.rb +9 -1
  44. data/lib/bundler/installer/gem_installer.rb +14 -11
  45. data/lib/bundler/installer/parallel_installer.rb +74 -36
  46. data/lib/bundler/installer.rb +6 -19
  47. data/lib/bundler/lazy_specification.rb +47 -20
  48. data/lib/bundler/lockfile_generator.rb +17 -2
  49. data/lib/bundler/lockfile_parser.rb +19 -6
  50. data/lib/bundler/man/bundle-add.1 +1 -1
  51. data/lib/bundler/man/bundle-binstubs.1 +3 -6
  52. data/lib/bundler/man/bundle-binstubs.1.ronn +4 -6
  53. data/lib/bundler/man/bundle-cache.1 +2 -14
  54. data/lib/bundler/man/bundle-cache.1.ronn +1 -14
  55. data/lib/bundler/man/bundle-check.1 +2 -5
  56. data/lib/bundler/man/bundle-check.1.ronn +0 -5
  57. data/lib/bundler/man/bundle-clean.1 +1 -1
  58. data/lib/bundler/man/bundle-config.1 +206 -148
  59. data/lib/bundler/man/bundle-config.1.ronn +136 -119
  60. data/lib/bundler/man/bundle-console.1 +1 -1
  61. data/lib/bundler/man/bundle-doctor.1 +43 -4
  62. data/lib/bundler/man/bundle-doctor.1.ronn +48 -4
  63. data/lib/bundler/man/bundle-env.1 +1 -1
  64. data/lib/bundler/man/bundle-exec.1 +2 -5
  65. data/lib/bundler/man/bundle-exec.1.ronn +1 -5
  66. data/lib/bundler/man/bundle-fund.1 +1 -1
  67. data/lib/bundler/man/bundle-gem.1 +64 -44
  68. data/lib/bundler/man/bundle-gem.1.ronn +10 -9
  69. data/lib/bundler/man/bundle-help.1 +1 -1
  70. data/lib/bundler/man/bundle-info.1 +1 -1
  71. data/lib/bundler/man/bundle-init.1 +1 -1
  72. data/lib/bundler/man/bundle-install.1 +16 -59
  73. data/lib/bundler/man/bundle-install.1.ronn +27 -108
  74. data/lib/bundler/man/bundle-issue.1 +1 -1
  75. data/lib/bundler/man/bundle-licenses.1 +1 -1
  76. data/lib/bundler/man/bundle-list.1 +6 -1
  77. data/lib/bundler/man/bundle-list.1.ronn +5 -0
  78. data/lib/bundler/man/bundle-lock.1 +1 -1
  79. data/lib/bundler/man/bundle-open.1 +1 -1
  80. data/lib/bundler/man/bundle-outdated.1 +1 -1
  81. data/lib/bundler/man/bundle-platform.1 +1 -1
  82. data/lib/bundler/man/bundle-plugin.1 +33 -15
  83. data/lib/bundler/man/bundle-plugin.1.ronn +36 -15
  84. data/lib/bundler/man/bundle-pristine.1 +1 -1
  85. data/lib/bundler/man/bundle-remove.1 +2 -8
  86. data/lib/bundler/man/bundle-remove.1.ronn +1 -8
  87. data/lib/bundler/man/bundle-show.1 +2 -5
  88. data/lib/bundler/man/bundle-show.1.ronn +0 -4
  89. data/lib/bundler/man/bundle-update.1 +5 -5
  90. data/lib/bundler/man/bundle-update.1.ronn +4 -4
  91. data/lib/bundler/man/bundle-version.1 +1 -1
  92. data/lib/bundler/man/bundle.1 +1 -10
  93. data/lib/bundler/man/bundle.1.ronn +0 -9
  94. data/lib/bundler/man/gemfile.5 +32 -1
  95. data/lib/bundler/man/gemfile.5.ronn +28 -0
  96. data/lib/bundler/man/index.txt +0 -2
  97. data/lib/bundler/match_platform.rb +31 -12
  98. data/lib/bundler/materialization.rb +3 -3
  99. data/lib/bundler/plugin/api/source.rb +8 -0
  100. data/lib/bundler/plugin/index.rb +6 -0
  101. data/lib/bundler/plugin/installer.rb +2 -11
  102. data/lib/bundler/plugin/source_list.rb +1 -1
  103. data/lib/bundler/plugin.rb +7 -4
  104. data/lib/bundler/resolver/package.rb +2 -1
  105. data/lib/bundler/resolver/strategy.rb +6 -3
  106. data/lib/bundler/resolver.rb +20 -4
  107. data/lib/bundler/retry.rb +30 -4
  108. data/lib/bundler/ruby_dsl.rb +17 -12
  109. data/lib/bundler/ruby_version.rb +1 -3
  110. data/lib/bundler/rubygems_ext.rb +117 -121
  111. data/lib/bundler/rubygems_gem_installer.rb +5 -4
  112. data/lib/bundler/rubygems_integration.rb +13 -12
  113. data/lib/bundler/runtime.rb +14 -3
  114. data/lib/bundler/self_manager.rb +34 -43
  115. data/lib/bundler/settings/validator.rb +5 -21
  116. data/lib/bundler/settings.rb +17 -32
  117. data/lib/bundler/shared_helpers.rb +12 -18
  118. data/lib/bundler/source/gemspec.rb +4 -0
  119. data/lib/bundler/source/git/git_proxy.rb +55 -29
  120. data/lib/bundler/source/git.rb +2 -3
  121. data/lib/bundler/source/metadata.rb +4 -0
  122. data/lib/bundler/source/path.rb +12 -7
  123. data/lib/bundler/source/rubygems.rb +59 -43
  124. data/lib/bundler/source/rubygems_aggregate.rb +4 -1
  125. data/lib/bundler/source.rb +3 -1
  126. data/lib/bundler/source_list.rb +5 -50
  127. data/lib/bundler/source_map.rb +8 -7
  128. data/lib/bundler/spec_set.rb +9 -14
  129. data/lib/bundler/stub_specification.rb +1 -0
  130. data/lib/bundler/templates/Executable +0 -11
  131. data/lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt +7 -129
  132. data/lib/bundler/templates/newgem/Cargo.toml.tt +6 -0
  133. data/lib/bundler/templates/newgem/Rakefile.tt +5 -0
  134. data/lib/bundler/templates/newgem/circleci/config.yml.tt +12 -0
  135. data/lib/bundler/templates/newgem/ext/newgem/Cargo.toml.tt +8 -1
  136. data/lib/bundler/templates/newgem/ext/newgem/build.rs.tt +5 -0
  137. data/lib/bundler/templates/newgem/ext/newgem/extconf-go.rb.tt +11 -0
  138. data/lib/bundler/templates/newgem/ext/newgem/go.mod.tt +5 -0
  139. data/lib/bundler/templates/newgem/ext/newgem/newgem-go.c.tt +2 -0
  140. data/lib/bundler/templates/newgem/ext/newgem/newgem.go.tt +31 -0
  141. data/lib/bundler/templates/newgem/ext/newgem/src/lib.rs.tt +13 -2
  142. data/lib/bundler/templates/newgem/github/workflows/build-gems.yml.tt +69 -0
  143. data/lib/bundler/templates/newgem/github/workflows/main.yml.tt +12 -1
  144. data/lib/bundler/templates/newgem/gitlab-ci.yml.tt +9 -0
  145. data/lib/bundler/templates/newgem/lib/newgem.rb.tt +1 -1
  146. data/lib/bundler/templates/newgem/newgem.gemspec.tt +17 -11
  147. data/lib/bundler/templates/newgem/spec/newgem_spec.rb.tt +8 -0
  148. data/lib/bundler/templates/newgem/test/minitest/test_newgem.rb.tt +6 -0
  149. data/lib/bundler/ui/shell.rb +12 -8
  150. data/lib/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb +26 -23
  151. data/lib/bundler/vendor/connection_pool/lib/connection_pool/version.rb +1 -1
  152. data/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +50 -6
  153. data/lib/bundler/vendor/fileutils/lib/fileutils.rb +57 -52
  154. data/lib/bundler/vendor/net-http-persistent/README.rdoc +1 -1
  155. data/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/timed_stack_multi.rb +2 -1
  156. data/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +84 -42
  157. data/lib/bundler/vendor/thor/lib/thor/actions/file_manipulation.rb +42 -6
  158. data/lib/bundler/vendor/thor/lib/thor/parser/options.rb +1 -1
  159. data/lib/bundler/vendor/thor/lib/thor/runner.rb +2 -2
  160. data/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +3 -7
  161. data/lib/bundler/vendor/thor/lib/thor/version.rb +1 -1
  162. data/lib/bundler/vendor/thor/lib/thor.rb +1 -1
  163. data/lib/bundler/vendor/uri/lib/uri/common.rb +57 -15
  164. data/lib/bundler/vendor/uri/lib/uri/file.rb +1 -1
  165. data/lib/bundler/vendor/uri/lib/uri/generic.rb +34 -21
  166. data/lib/bundler/vendor/uri/lib/uri/http.rb +12 -0
  167. data/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb +9 -8
  168. data/lib/bundler/vendor/uri/lib/uri/version.rb +2 -2
  169. data/lib/bundler/version.rb +10 -2
  170. data/lib/bundler/vlad.rb +1 -14
  171. data/lib/bundler/worker.rb +12 -4
  172. data/lib/bundler.rb +20 -40
  173. metadata +13 -25
  174. data/lib/bundler/cli/inject.rb +0 -60
  175. data/lib/bundler/cli/viz.rb +0 -31
  176. data/lib/bundler/gem_helpers.rb +0 -144
  177. data/lib/bundler/graph.rb +0 -152
  178. data/lib/bundler/man/bundle-inject.1 +0 -31
  179. data/lib/bundler/man/bundle-inject.1.ronn +0 -32
  180. data/lib/bundler/man/bundle-viz.1 +0 -30
  181. data/lib/bundler/man/bundle-viz.1.ronn +0 -36
  182. data/lib/bundler/similarity_detector.rb +0 -63
  183. data/lib/bundler/templates/Executable.bundler +0 -109
  184. data/lib/bundler/vendor/connection_pool/.document +0 -1
  185. data/lib/bundler/vendor/fileutils/.document +0 -1
  186. data/lib/bundler/vendor/net-http-persistent/.document +0 -1
  187. data/lib/bundler/vendor/pub_grub/.document +0 -1
  188. data/lib/bundler/vendor/securerandom/.document +0 -1
  189. data/lib/bundler/vendor/thor/.document +0 -1
  190. data/lib/bundler/vendor/tsort/.document +0 -1
  191. data/lib/bundler/vendor/uri/.document +0 -1
@@ -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" "April 2026" ""
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" "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,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" "April 2026" ""
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" "April 2026" ""
4
4
  .SH "NAME"
5
5
  \fBbundle\-platform\fR \- Displays platform compatibility information
6
6
  .SH "SYNOPSIS"
@@ -1,12 +1,12 @@
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" "April 2026" ""
4
4
  .SH "NAME"
5
5
  \fBbundle\-plugin\fR \- Manage Bundler plugins
6
6
  .SH "SYNOPSIS"
7
- \fBbundle plugin\fR install PLUGINS [\-\-source=\fISOURCE\fR] [\-\-version=\fIversion\fR] [\-\-git=\fIgit\-url\fR] [\-\-branch=\fIbranch\fR|\-\-ref=\fIrev\fR] [\-\-path=\fIpath\fR]
7
+ \fBbundle plugin\fR install PLUGINS [\-\-source=SOURCE] [\-\-version=VERSION] [\-\-git=GIT] [\-\-branch=BRANCH|\-\-ref=REF] [\-\-path=PATH]
8
8
  .br
9
- \fBbundle plugin\fR uninstall PLUGINS
9
+ \fBbundle plugin\fR uninstall PLUGINS [\-\-all]
10
10
  .br
11
11
  \fBbundle plugin\fR list
12
12
  .br
@@ -16,18 +16,23 @@ You can install, uninstall, and list plugin(s) with this command to extend funct
16
16
  .SH "SUB\-COMMANDS"
17
17
  .SS "install"
18
18
  Install the given plugin(s)\.
19
+ .P
20
+ For example, \fBbundle plugin install bundler\-graph\fR will install bundler\-graph gem from globally configured sources (defaults to RubyGems\.org)\. Note that the global source specified in Gemfile is ignored\.
21
+ .P
22
+ \fBOPTIONS\fR
19
23
  .TP
20
- \fBbundle plugin install bundler\-graph\fR
21
- Install bundler\-graph gem from globally configured sources (defaults to RubyGems\.org)\. The global source, specified in source in Gemfile is ignored\.
22
- .TP
23
- \fBbundle plugin install bundler\-graph \-\-source https://example\.com\fR
24
- Install bundler\-graph gem from example\.com\. The global source, specified in source in Gemfile is not considered\.
24
+ \fB\-\-source=SOURCE\fR
25
+ Install the plugin gem from a specific source, rather than from globally configured sources\.
26
+ .IP
27
+ Example: \fBbundle plugin install bundler\-graph \-\-source https://example\.com\fR
25
28
  .TP
26
- \fBbundle plugin install bundler\-graph \-\-version 0\.2\.1\fR
27
- You can specify the version of the gem via \fB\-\-version\fR\.
29
+ \fB\-\-version=VERSION\fR
30
+ Specify a version of the plugin gem to install via \fB\-\-version\fR\.
31
+ .IP
32
+ Example: \fBbundle plugin install bundler\-graph \-\-version 0\.2\.1\fR
28
33
  .TP
29
- \fBbundle plugin install bundler\-graph \-\-git https://github\.com/rubygems/bundler\-graph\fR
30
- Install bundler\-graph gem from Git repository\. You can use standard Git URLs like:
34
+ \fB\-\-git=GIT\fR
35
+ Install the plugin gem from a Git repository\. You can use standard Git URLs like:
31
36
  .IP
32
37
  \fBssh://[user@]host\.xz[:port]/path/to/repo\.git\fR
33
38
  .br
@@ -37,12 +42,25 @@ Install bundler\-graph gem from Git repository\. You can use standard Git URLs l
37
42
  .br
38
43
  \fBfile:///path/to/repo\fR
39
44
  .IP
40
- When you specify \fB\-\-git\fR, you can use \fB\-\-branch\fR or \fB\-\-ref\fR to specify any branch, tag, or commit hash (revision) to use\.
45
+ Example: \fBbundle plugin install bundler\-graph \-\-git https://github\.com/rubygems/bundler\-graph\fR
41
46
  .TP
42
- \fBbundle plugin install bundler\-graph \-\-path \.\./bundler\-graph\fR
43
- Install bundler\-graph gem from a local path\.
47
+ \fB\-\-branch=BRANCH\fR
48
+ When you specify \fB\-\-git\fR, you can use \fB\-\-branch\fR to use\.
49
+ .TP
50
+ \fB\-\-ref=REF\fR
51
+ When you specify \fB\-\-git\fR, you can use \fB\-\-ref\fR to specify any tag, or commit hash (revision) to use\.
52
+ .TP
53
+ \fB\-\-path=PATH\fR
54
+ Install the plugin gem from a local path\.
55
+ .IP
56
+ Example: \fBbundle plugin install bundler\-graph \-\-path \.\./bundler\-graph\fR
44
57
  .SS "uninstall"
45
58
  Uninstall the plugin(s) specified in PLUGINS\.
59
+ .P
60
+ \fBOPTIONS\fR
61
+ .TP
62
+ \fB\-\-all\fR
63
+ Uninstall all the installed plugins\. If no plugin is installed, then it does nothing\.
46
64
  .SS "list"
47
65
  List the installed plugins and available commands\.
48
66
  .P
@@ -3,10 +3,10 @@ bundle-plugin(1) -- Manage Bundler plugins
3
3
 
4
4
  ## SYNOPSIS
5
5
 
6
- `bundle plugin` install PLUGINS [--source=<SOURCE>] [--version=<version>]
7
- [--git=<git-url>] [--branch=<branch>|--ref=<rev>]
8
- [--path=<path>]<br>
9
- `bundle plugin` uninstall PLUGINS<br>
6
+ `bundle plugin` install PLUGINS [--source=SOURCE] [--version=VERSION]
7
+ [--git=GIT] [--branch=BRANCH|--ref=REF]
8
+ [--path=PATH]<br>
9
+ `bundle plugin` uninstall PLUGINS [--all]<br>
10
10
  `bundle plugin` list<br>
11
11
  `bundle plugin` help [COMMAND]
12
12
 
@@ -20,32 +20,53 @@ You can install, uninstall, and list plugin(s) with this command to extend funct
20
20
 
21
21
  Install the given plugin(s).
22
22
 
23
- * `bundle plugin install bundler-graph`:
24
- Install bundler-graph gem from globally configured sources (defaults to RubyGems.org). The global source, specified in source in Gemfile is ignored.
23
+ For example, `bundle plugin install bundler-graph` will install bundler-graph
24
+ gem from globally configured sources (defaults to RubyGems.org). Note that the
25
+ global source specified in Gemfile is ignored.
25
26
 
26
- * `bundle plugin install bundler-graph --source https://example.com`:
27
- Install bundler-graph gem from example.com. The global source, specified in source in Gemfile is not considered.
27
+ **OPTIONS**
28
28
 
29
- * `bundle plugin install bundler-graph --version 0.2.1`:
30
- You can specify the version of the gem via `--version`.
29
+ * `--source=SOURCE`:
30
+ Install the plugin gem from a specific source, rather than from globally configured sources.
31
31
 
32
- * `bundle plugin install bundler-graph --git https://github.com/rubygems/bundler-graph`:
33
- Install bundler-graph gem from Git repository. You can use standard Git URLs like:
32
+ Example: `bundle plugin install bundler-graph --source https://example.com`
33
+
34
+ * `--version=VERSION`:
35
+ Specify a version of the plugin gem to install via `--version`.
36
+
37
+ Example: `bundle plugin install bundler-graph --version 0.2.1`
38
+
39
+ * `--git=GIT`:
40
+ Install the plugin gem from a Git repository. You can use standard Git URLs like:
34
41
 
35
42
  `ssh://[user@]host.xz[:port]/path/to/repo.git`<br>
36
43
  `http[s]://host.xz[:port]/path/to/repo.git`<br>
37
44
  `/path/to/repo`<br>
38
45
  `file:///path/to/repo`
39
46
 
40
- When you specify `--git`, you can use `--branch` or `--ref` to specify any branch, tag, or commit hash (revision) to use.
47
+ Example: `bundle plugin install bundler-graph --git https://github.com/rubygems/bundler-graph`
48
+
49
+ * `--branch=BRANCH`:
50
+ When you specify `--git`, you can use `--branch` to use.
41
51
 
42
- * `bundle plugin install bundler-graph --path ../bundler-graph`:
43
- Install bundler-graph gem from a local path.
52
+ * `--ref=REF`:
53
+ When you specify `--git`, you can use `--ref` to specify any tag, or commit
54
+ hash (revision) to use.
55
+
56
+ * `--path=PATH`:
57
+ Install the plugin gem from a local path.
58
+
59
+ Example: `bundle plugin install bundler-graph --path ../bundler-graph`
44
60
 
45
61
  ### uninstall
46
62
 
47
63
  Uninstall the plugin(s) specified in PLUGINS.
48
64
 
65
+ **OPTIONS**
66
+
67
+ * `--all`:
68
+ Uninstall all the installed plugins. If no plugin is installed, then it does nothing.
69
+
49
70
  ### list
50
71
 
51
72
  List the installed plugins and available commands.
@@ -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" "April 2026" ""
4
4
  .SH "NAME"
5
5
  \fBbundle\-pristine\fR \- Restores installed gems to their pristine condition
6
6
  .SH "SYNOPSIS"
@@ -1,21 +1,15 @@
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" "April 2026" ""
4
4
  .SH "NAME"
5
5
  \fBbundle\-remove\fR \- Removes gems from the Gemfile
6
6
  .SH "SYNOPSIS"
7
- \fBbundle remove [GEM [GEM \|\.\|\.\|\.]] [\-\-install]\fR
7
+ `bundle remove [GEM [GEM \|\.\|\.\|\.]]
8
8
  .SH "DESCRIPTION"
9
9
  Removes the given gems from the Gemfile while ensuring that the resulting Gemfile is still valid\. If a gem cannot be removed, a warning is printed\. If a gem is already absent from the Gemfile, and error is raised\.
10
- .SH "OPTIONS"
11
- .TP
12
- \fB\-\-install\fR
13
- Runs \fBbundle install\fR after the given gems have been removed from the Gemfile, which ensures that both the lockfile and the installed gems on disk are also updated to remove the given gem(s)\.
14
10
  .P
15
11
  Example:
16
12
  .P
17
13
  bundle remove rails
18
14
  .P
19
15
  bundle remove rails rack
20
- .P
21
- bundle remove rails rack \-\-install
@@ -3,21 +3,14 @@ bundle-remove(1) -- Removes gems from the Gemfile
3
3
 
4
4
  ## SYNOPSIS
5
5
 
6
- `bundle remove [GEM [GEM ...]] [--install]`
6
+ `bundle remove [GEM [GEM ...]]
7
7
 
8
8
  ## DESCRIPTION
9
9
 
10
10
  Removes the given gems from the Gemfile while ensuring that the resulting Gemfile is still valid. If a gem cannot be removed, a warning is printed. If a gem is already absent from the Gemfile, and error is raised.
11
11
 
12
- ## OPTIONS
13
-
14
- * `--install`:
15
- Runs `bundle install` after the given gems have been removed from the Gemfile, which ensures that both the lockfile and the installed gems on disk are also updated to remove the given gem(s).
16
-
17
12
  Example:
18
13
 
19
14
  bundle remove rails
20
15
 
21
16
  bundle remove rails rack
22
-
23
- bundle remove rails rack --install
@@ -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\-SHOW" "1" "March 2025" ""
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"
7
- \fBbundle show\fR [GEM] [\-\-paths] [\-\-outdated]
7
+ \fBbundle show\fR [GEM] [\-\-paths]
8
8
  .SH "DESCRIPTION"
9
9
  Without the [GEM] option, \fBshow\fR will print a list of the names and versions of all gems that are required by your [\fBGemfile(5)\fR][Gemfile(5)], sorted by name\.
10
10
  .P
@@ -13,7 +13,4 @@ Calling show with [GEM] will list the exact location of that gem on your machine
13
13
  .TP
14
14
  \fB\-\-paths\fR
15
15
  List the paths of all gems that are required by your [\fBGemfile(5)\fR][Gemfile(5)], sorted by gem name\.
16
- .TP
17
- \fB\-\-outdated\fR
18
- Show verbose output including whether gems are outdated\.
19
16
 
@@ -5,7 +5,6 @@ bundle-show(1) -- Shows all the gems in your bundle, or the path to a gem
5
5
 
6
6
  `bundle show` [GEM]
7
7
  [--paths]
8
- [--outdated]
9
8
 
10
9
  ## DESCRIPTION
11
10
 
@@ -20,6 +19,3 @@ machine.
20
19
  * `--paths`:
21
20
  List the paths of all gems that are required by your [`Gemfile(5)`][Gemfile(5)],
22
21
  sorted by gem name.
23
-
24
- * `--outdated`:
25
- Show verbose output including whether gems are outdated.
@@ -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" "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]] [\-\-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" "April 2026" ""
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" "1" "March 2025" ""
3
+ .TH "BUNDLE" "1" "April 2026" ""
4
4
  .SH "NAME"
5
5
  \fBbundle\fR \- Ruby Dependency Management
6
6
  .SH "SYNOPSIS"
@@ -66,9 +66,6 @@ Open an installed gem in the editor
66
66
  \fBbundle lock(1)\fR \fIbundle\-lock\.1\.html\fR
67
67
  Generate a lockfile for your dependencies
68
68
  .TP
69
- \fBbundle viz(1)\fR \fIbundle\-viz\.1\.html\fR (deprecated)
70
- Generate a visual representation of your dependencies
71
- .TP
72
69
  \fBbundle init(1)\fR \fIbundle\-init\.1\.html\fR
73
70
  Generate a simple \fBGemfile\fR, placed in the current directory
74
71
  .TP
@@ -94,9 +91,3 @@ Manage Bundler plugins
94
91
  Prints Bundler version information
95
92
  .SH "PLUGINS"
96
93
  When running a command that isn't listed in PRIMARY COMMANDS or UTILITIES, Bundler will try to find an executable on your path named \fBbundler\-<command>\fR and execute it, passing down any extra arguments to it\.
97
- .SH "OBSOLETE"
98
- These commands are obsolete and should no longer be used:
99
- .IP "\(bu" 4
100
- \fBbundle inject(1)\fR
101
- .IP "" 0
102
-
@@ -76,9 +76,6 @@ We divide `bundle` subcommands into primary commands and utilities:
76
76
  * [`bundle lock(1)`](bundle-lock.1.html):
77
77
  Generate a lockfile for your dependencies
78
78
 
79
- * [`bundle viz(1)`](bundle-viz.1.html) (deprecated):
80
- Generate a visual representation of your dependencies
81
-
82
79
  * [`bundle init(1)`](bundle-init.1.html):
83
80
  Generate a simple `Gemfile`, placed in the current directory
84
81
 
@@ -108,9 +105,3 @@ We divide `bundle` subcommands into primary commands and utilities:
108
105
  When running a command that isn't listed in PRIMARY COMMANDS or UTILITIES,
109
106
  Bundler will try to find an executable on your path named `bundler-<command>`
110
107
  and execute it, passing down any extra arguments to it.
111
-
112
- ## OBSOLETE
113
-
114
- These commands are obsolete and should no longer be used:
115
-
116
- * `bundle inject(1)`
@@ -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" "April 2026" ""
4
4
  .SH "NAME"
5
5
  \fBGemfile\fR \- A format for describing gem dependencies for Ruby programs
6
6
  .SH "SYNOPSIS"
@@ -469,4 +469,35 @@ For implicit gems (dependencies of explicit gems), any source, git, or path repo
469
469
  .IP "3." 4
470
470
  If neither of the above conditions are met, the global source will be used\. If multiple global sources are specified, they will be prioritized from last to first, but this is deprecated since Bundler 1\.13, so Bundler prints a warning and will abort with an error in the future\.
471
471
  .IP "" 0
472
+ .SH "LOCKFILE"
473
+ By default, Bundler will create a lockfile by adding \fB\.lock\fR to the end of the Gemfile name\. To change this, use the \fBlockfile\fR method:
474
+ .IP "" 4
475
+ .nf
476
+ lockfile "/path/to/lockfile\.lock"
477
+ .fi
478
+ .IP "" 0
479
+ .P
480
+ This is useful when you want to use different lockfiles per ruby version or platform\.
481
+ .P
482
+ To avoid writing a lock file, use \fBfalse\fR as the argument:
483
+ .IP "" 4
484
+ .nf
485
+ lockfile false
486
+ .fi
487
+ .IP "" 0
488
+ .P
489
+ This is useful for library development and other situations where the code is expected to work with a range of dependency versions\.
490
+ .SS "LOCKFILE PRECEDENCE"
491
+ When determining path to the lockfile or whether to create a lockfile, the following precedence is used:
492
+ .IP "1." 4
493
+ The \fBbundle install\fR \fB\-\-no\-lock\fR option (which disables lockfile creation)\.
494
+ .IP "2." 4
495
+ The \fBbundle install\fR \fB\-\-lockfile\fR option\.
496
+ .IP "3." 4
497
+ The \fBBUNDLE_LOCKFILE\fR environment variable\.
498
+ .IP "4." 4
499
+ The \fBlockfile\fR method in the Gemfile\.
500
+ .IP "5." 4
501
+ The default behavior of adding \fB\.lock\fR to the end of the Gemfile name\.
502
+ .IP "" 0
472
503
 
@@ -556,3 +556,31 @@ bundler uses the following priority order:
556
556
  If multiple global sources are specified, they will be prioritized from
557
557
  last to first, but this is deprecated since Bundler 1.13, so Bundler prints
558
558
  a warning and will abort with an error in the future.
559
+
560
+ ## LOCKFILE
561
+
562
+ By default, Bundler will create a lockfile by adding `.lock` to the end of the
563
+ Gemfile name. To change this, use the `lockfile` method:
564
+
565
+ lockfile "/path/to/lockfile.lock"
566
+
567
+ This is useful when you want to use different lockfiles per ruby version or
568
+ platform.
569
+
570
+ To avoid writing a lock file, use `false` as the argument:
571
+
572
+ lockfile false
573
+
574
+ This is useful for library development and other situations where the code is
575
+ expected to work with a range of dependency versions.
576
+
577
+ ### LOCKFILE PRECEDENCE
578
+
579
+ When determining path to the lockfile or whether to create a lockfile, the
580
+ following precedence is used:
581
+
582
+ 1. The `bundle install` `--no-lock` option (which disables lockfile creation).
583
+ 1. The `bundle install` `--lockfile` option.
584
+ 1. The `BUNDLE_LOCKFILE` environment variable.
585
+ 1. The `lockfile` method in the Gemfile.
586
+ 1. The default behavior of adding `.lock` to the end of the Gemfile name.
@@ -15,7 +15,6 @@ bundle-gem(1) bundle-gem.1
15
15
  bundle-help(1) bundle-help.1
16
16
  bundle-info(1) bundle-info.1
17
17
  bundle-init(1) bundle-init.1
18
- bundle-inject(1) bundle-inject.1
19
18
  bundle-install(1) bundle-install.1
20
19
  bundle-issue(1) bundle-issue.1
21
20
  bundle-licenses(1) bundle-licenses.1
@@ -30,4 +29,3 @@ bundle-remove(1) bundle-remove.1
30
29
  bundle-show(1) bundle-show.1
31
30
  bundle-update(1) bundle-update.1
32
31
  bundle-version(1) bundle-version.1
33
- bundle-viz(1) bundle-viz.1
@@ -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,14 +22,14 @@ 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
 
31
31
  def dependencies
32
- specs.first.runtime_dependencies.map {|d| [d, platform] }
32
+ (materialized_spec || specs.first).runtime_dependencies.map {|d| [d, platform] }
33
33
  end
34
34
 
35
35
  def materialized_spec
@@ -74,6 +74,14 @@ module Bundler
74
74
  {}
75
75
  end
76
76
 
77
+ # Download the gem specified by the spec at appropriate path.
78
+ #
79
+ # A source plugin can implement this method to split the download and the
80
+ # installation of a gem.
81
+ #
82
+ # @return [Boolean] Whether the download of the gem succeeded.
83
+ def download(spec, opts); end
84
+
77
85
  # Install the gem specified by the spec at appropriate path.
78
86
  # `install_path` provides a sufficient default, if the source can only
79
87
  # satisfy one gem, but is not binding.
@@ -119,6 +119,12 @@ module Bundler
119
119
  @plugin_paths[name]
120
120
  end
121
121
 
122
+ def up_to_date?(spec)
123
+ path = installed?(spec.name)
124
+
125
+ path == spec.full_gem_path
126
+ end
127
+
122
128
  def installed_plugins
123
129
  @plugin_paths.keys
124
130
  end
@@ -43,16 +43,6 @@ module Bundler
43
43
  private
44
44
 
45
45
  def check_sources_consistency!(options)
46
- if options.key?(:git) && options.key?(:local_git)
47
- raise InvalidOption, "Remote and local plugin git sources can't be both specified"
48
- end
49
-
50
- # back-compat; local_git is an alias for git
51
- if options.key?(:local_git)
52
- Bundler::SharedHelpers.major_deprecation(2, "--local_git is deprecated, use --git")
53
- options[:git] = options.delete(:local_git)
54
- end
55
-
56
46
  if (options.keys & [:source, :git, :path]).length > 1
57
47
  raise InvalidOption, "Only one of --source, --git, or --path may be specified"
58
48
  end
@@ -120,7 +110,8 @@ module Bundler
120
110
  paths = {}
121
111
 
122
112
  specs.each do |spec|
123
- spec.source.install spec
113
+ spec.source.download(spec)
114
+ spec.source.install(spec)
124
115
 
125
116
  paths[spec.name] = spec
126
117
  end
@@ -23,7 +23,7 @@ module Bundler
23
23
 
24
24
  private
25
25
 
26
- def rubygems_aggregate_class
26
+ def source_class
27
27
  Plugin::Installer::Rubygems
28
28
  end
29
29
  end