rubygems-update 4.1.0.beta1 → 4.1.0.beta2
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +99 -8
- data/Manifest.txt +0 -2
- data/SECURITY.md +10 -1
- data/lib/bundler/build_metadata.rb +2 -2
- data/lib/bundler/cli/common.rb +4 -0
- data/lib/bundler/cli/doctor/ssl.rb +4 -8
- data/lib/bundler/cli/info.rb +1 -1
- data/lib/bundler/cli/lock.rb +14 -3
- data/lib/bundler/cli/open.rb +7 -1
- data/lib/bundler/cli/outdated.rb +8 -10
- data/lib/bundler/cli/platform.rb +15 -1
- data/lib/bundler/cli/show.rb +5 -1
- data/lib/bundler/cli/update.rb +1 -1
- data/lib/bundler/cli.rb +22 -7
- data/lib/bundler/constants.rb +1 -1
- data/lib/bundler/definition.rb +64 -14
- data/lib/bundler/dsl.rb +61 -3
- data/lib/bundler/fetcher/downloader.rb +5 -1
- data/lib/bundler/gem_helper.rb +1 -1
- data/lib/bundler/installer/parallel_installer.rb +2 -1
- data/lib/bundler/installer.rb +5 -1
- data/lib/bundler/lazy_specification.rb +1 -1
- data/lib/bundler/lockfile_parser.rb +1 -1
- data/lib/bundler/man/bundle-info.1 +4 -1
- data/lib/bundler/man/bundle-info.1.ronn +4 -0
- data/lib/bundler/man/bundle-lock.1 +2 -2
- data/lib/bundler/man/bundle-lock.1.ronn +4 -3
- data/lib/bundler/man/bundle-open.1 +4 -1
- data/lib/bundler/man/bundle-open.1.ronn +4 -1
- data/lib/bundler/man/bundle-outdated.1 +1 -1
- data/lib/bundler/man/bundle-outdated.1.ronn +1 -1
- data/lib/bundler/man/bundle-show.1 +4 -1
- data/lib/bundler/man/bundle-show.1.ronn +4 -0
- data/lib/bundler/man/bundle-update.1 +3 -3
- data/lib/bundler/man/bundle-update.1.ronn +5 -3
- data/lib/bundler/man/gemfile.5 +33 -1
- data/lib/bundler/man/gemfile.5.ronn +53 -2
- data/lib/bundler/materialization.rb +3 -1
- data/lib/bundler/override.rb +30 -2
- data/lib/bundler/resolver.rb +28 -4
- data/lib/bundler/self_manager.rb +15 -9
- data/lib/bundler/settings.rb +10 -26
- data/lib/bundler/source/git/git_proxy.rb +39 -2
- data/lib/bundler/source/git.rb +34 -7
- data/lib/bundler/source/rubygems_aggregate.rb +1 -1
- data/lib/bundler/source_map.rb +7 -3
- data/lib/bundler/spec_set.rb +8 -4
- data/lib/bundler/templates/newgem/ext/newgem/Cargo.toml.tt +1 -1
- data/lib/bundler/version.rb +1 -1
- data/lib/bundler.rb +1 -3
- data/lib/rubygems/command_manager.rb +1 -5
- data/lib/rubygems/commands/build_command.rb +34 -3
- data/lib/rubygems/commands/exec_command.rb +3 -0
- data/lib/rubygems/commands/update_command.rb +2 -2
- data/lib/rubygems/compact_index_client/http_fetcher.rb +5 -3
- data/lib/rubygems/content_address.rb +17 -14
- data/lib/rubygems/deprecate.rb +2 -2
- data/lib/rubygems/ext/builder.rb +10 -3
- data/lib/rubygems/gemcutter_utilities/webauthn_listener.rb +9 -0
- data/lib/rubygems/installer.rb +4 -22
- data/lib/rubygems/package.rb +60 -46
- data/lib/rubygems/package_task.rb +75 -6
- data/lib/rubygems/psych_tree.rb +0 -4
- data/lib/rubygems/remote_fetcher.rb +12 -6
- data/lib/rubygems/request/connection_pools.rb +4 -2
- data/lib/rubygems/resolver/api_set.rb +1 -1
- data/lib/rubygems/safe_marshal/visitors/to_ruby.rb +8 -22
- data/lib/rubygems/security.rb +16 -10
- data/lib/rubygems/source/git.rb +3 -1
- data/lib/rubygems/specification.rb +14 -1
- data/lib/rubygems/uninstaller.rb +1 -0
- data/lib/rubygems/uri.rb +2 -2
- data/lib/rubygems/util/atomic_file_writer.rb +4 -2
- data/lib/rubygems/vendor/net-http/lib/net/http.rb +24 -2
- data/lib/rubygems/win_platform.rb +0 -3
- data/lib/rubygems.rb +27 -19
- metadata +656 -657
- data/lib/rubygems/vendor/resolv/COPYING +0 -56
- data/lib/rubygems/vendor/resolv/lib/resolv.rb +0 -3508
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 92ef5aaf37fa34e9c54d4ccb621998b24ad8a17dacf8fd40c4d3431b1deadf5f
|
|
4
|
+
data.tar.gz: b7f8ac5ccc71b284957ce258ce02c6930926da7e32d15ac1295220fd7caa6dbc
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: f27352dfa7e4d9f164444c96ee7ce41ff17dd8288ce4a7e96f3f5c4ca3452fee4427a73abb7c82f753165488880039fcef77e6d3870addf9a57d908cfe8f3810
|
|
7
|
+
data.tar.gz: 1dcf75db4af1ac4206836b95283658481f5d70a3a049e06959a642efbcb5e7a4945067417b43daa8ac648f72aa6d7124907c31546ba82f1102fa334237426bc5
|
data/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,97 @@
|
|
|
2
2
|
|
|
3
3
|
Bundler's changelog before 4.0.0, when it was versioned separately from RubyGems, is in [doc/CHANGELOG-bundler-2.x.md](https://github.com/ruby/rubygems/blob/master/doc/CHANGELOG-bundler-2.x.md).
|
|
4
4
|
|
|
5
|
+
## 4.1.0.beta2 / 2026-10-08
|
|
6
|
+
|
|
7
|
+
### RubyGems
|
|
8
|
+
|
|
9
|
+
Changes already released in 4.0.x are not repeated here.
|
|
10
|
+
|
|
11
|
+
#### Features:
|
|
12
|
+
|
|
13
|
+
* Support content addressable gems in `Gem::PackageTask`. Pull request [#9897](https://github.com/ruby/rubygems/pull/9897) by Harriet Oughton, Gira Chawda and Jenny Shen
|
|
14
|
+
* Add `--content-addressable` to `gem build` and make `--ruby-abi` only set the Ruby ABI. Pull request [#9906](https://github.com/ruby/rubygems/pull/9906) by Harriet Oughton
|
|
15
|
+
|
|
16
|
+
#### Enhancements:
|
|
17
|
+
|
|
18
|
+
* Drop setuid, setgid and sticky bits when extracting gems. Pull request [#9929](https://github.com/ruby/rubygems/pull/9929) by Hiroshi SHIBATA
|
|
19
|
+
* Improve handling of paths with invalid Windows characters. Pull request [#9276](https://github.com/ruby/rubygems/pull/9276) by Said Kaldybaev and Hiroshi SHIBATA
|
|
20
|
+
* Installs bundler 4.1.0.beta2 as a default gem.
|
|
21
|
+
|
|
22
|
+
#### Breaking changes:
|
|
23
|
+
|
|
24
|
+
* Build a platform gem with `gem build --platform` for the local platform. Pull request [#9873](https://github.com/ruby/rubygems/pull/9873) by Hiroshi SHIBATA
|
|
25
|
+
* Fix `gem update --user-install` updating gems outside the user directory. Pull request [#9872](https://github.com/ruby/rubygems/pull/9872) by Hiroshi SHIBATA
|
|
26
|
+
|
|
27
|
+
### Bundler
|
|
28
|
+
|
|
29
|
+
Changes already released in 4.0.x are not repeated here.
|
|
30
|
+
|
|
31
|
+
#### Features:
|
|
32
|
+
|
|
33
|
+
* Let override drop or replace one dependency of a gem. Pull request [#9935](https://github.com/ruby/rubygems/pull/9935) by Hiroshi SHIBATA
|
|
34
|
+
* Add `sparse_checkout` option to git source. Pull request [#9295](https://github.com/ruby/rubygems/pull/9295) by Ian Ker-Seymer and Hiroshi SHIBATA
|
|
35
|
+
* Implement `--exact-match` Flag for `bundle info` / `show` / `open`. Pull request [#9489](https://github.com/ruby/rubygems/pull/9489) by Harriet Oughton
|
|
36
|
+
|
|
37
|
+
#### Bug fixes:
|
|
38
|
+
|
|
39
|
+
* Respect Gemfile lockfile in `bundle lock`. Pull request [#9661](https://github.com/ruby/rubygems/pull/9661) by David Stosik and Hiroshi SHIBATA
|
|
40
|
+
|
|
41
|
+
## 4.0.22 / 2026-09-30
|
|
42
|
+
|
|
43
|
+
### RubyGems
|
|
44
|
+
|
|
45
|
+
#### Enhancements:
|
|
46
|
+
|
|
47
|
+
* Add --source option to gem exec command. Pull request [#9765](https://github.com/ruby/rubygems/pull/9765) by Akshay Birajdar
|
|
48
|
+
* Keep credentials on redirects only within the same origin. Pull request [#9909](https://github.com/ruby/rubygems/pull/9909) by Hiroshi SHIBATA
|
|
49
|
+
* Validate the version field in Gem::Installer#verify_spec. Pull request [#9890](https://github.com/ruby/rubygems/pull/9890) by Hiroshi SHIBATA
|
|
50
|
+
* Installs bundler 4.0.22 as a default gem.
|
|
51
|
+
|
|
52
|
+
#### Bug fixes:
|
|
53
|
+
|
|
54
|
+
* Remove the build_info file on uninstall and stop gem build from logging unknown extensions. Pull request [#9894](https://github.com/ruby/rubygems/pull/9894) by Hiroshi SHIBATA
|
|
55
|
+
|
|
56
|
+
### Bundler
|
|
57
|
+
|
|
58
|
+
#### Enhancements:
|
|
59
|
+
|
|
60
|
+
* Report the effective platform in `bundle platform`. Pull request [#9898](https://github.com/ruby/rubygems/pull/9898) by Islam Elsayed
|
|
61
|
+
* Keep credentials on redirects only within the same origin. Pull request [#9909](https://github.com/ruby/rubygems/pull/9909) by Hiroshi SHIBATA
|
|
62
|
+
* Update Magnus version in Rust extension gem template. Pull request [#9904](https://github.com/ruby/rubygems/pull/9904) by Mat Sadler and Hiroshi SHIBATA
|
|
63
|
+
|
|
64
|
+
#### Bug fixes:
|
|
65
|
+
|
|
66
|
+
* Stop `Bundler.bin_path` creating the directory it reports. Pull request [#9887](https://github.com/ruby/rubygems/pull/9887) by Islam Elsayed and Hiroshi SHIBATA
|
|
67
|
+
* Look up `bundler-<command>` executables only in PATH. Pull request [#9874](https://github.com/ruby/rubygems/pull/9874) by Hiroshi SHIBATA
|
|
68
|
+
|
|
69
|
+
#### Documentation:
|
|
70
|
+
|
|
71
|
+
* Describe `--major` as preferring the latest major version. Pull request [#9891](https://github.com/ruby/rubygems/pull/9891) by Hiroshi SHIBATA
|
|
72
|
+
|
|
73
|
+
## 4.0.21 / 2026-09-16
|
|
74
|
+
|
|
75
|
+
### RubyGems
|
|
76
|
+
|
|
77
|
+
#### Enhancements:
|
|
78
|
+
|
|
79
|
+
* Stop vendoring resolv for two regexps. Pull request [#9877](https://github.com/ruby/rubygems/pull/9877) by Hiroshi SHIBATA
|
|
80
|
+
* Normalize absolute symlink targets during gem extraction. Pull request [#9860](https://github.com/ruby/rubygems/pull/9860) by Hiroshi SHIBATA
|
|
81
|
+
* Installs bundler 4.0.21 as a default gem.
|
|
82
|
+
|
|
83
|
+
### Bundler
|
|
84
|
+
|
|
85
|
+
#### Enhancements:
|
|
86
|
+
|
|
87
|
+
* Don't update bundler to a prerelease unless asked for one. Pull request [#9869](https://github.com/ruby/rubygems/pull/9869) by Hiroshi SHIBATA
|
|
88
|
+
* Reject Bundler redirects that downgrade https to http. Pull request [#9859](https://github.com/ruby/rubygems/pull/9859) by Hiroshi SHIBATA
|
|
89
|
+
|
|
90
|
+
#### Bug fixes:
|
|
91
|
+
|
|
92
|
+
* Support `safe.bareRepository=explicit` in git sources. Pull request [#9876](https://github.com/ruby/rubygems/pull/9876) by Hiroshi SHIBATA
|
|
93
|
+
* Stop resolving locally for empty CHECKSUMS entries. Pull request [#9862](https://github.com/ruby/rubygems/pull/9862) by Hiroshi SHIBATA
|
|
94
|
+
* Expand the git source gemspec path before the chdir. Pull request [#9845](https://github.com/ruby/rubygems/pull/9845) by Hiroshi SHIBATA
|
|
95
|
+
|
|
5
96
|
## 4.1.0.beta1 / 2026-09-09
|
|
6
97
|
|
|
7
98
|
### RubyGems
|
|
@@ -10,14 +101,14 @@ Changes already released in 4.0.x are not repeated here.
|
|
|
10
101
|
|
|
11
102
|
#### Features:
|
|
12
103
|
|
|
13
|
-
* Add content addressable gems support. Pull request [#9773](https://github.com/ruby/rubygems/pull/9773) by Jenny Shen
|
|
104
|
+
* Add content addressable gems support. Pull request [#9773](https://github.com/ruby/rubygems/pull/9773) by Jenny Shen, Harriet Oughton and Gira Chawda
|
|
14
105
|
* Let the gem and bundle cooldown settings cover each other. Pull request [#9852](https://github.com/ruby/rubygems/pull/9852) by Hiroshi SHIBATA
|
|
15
|
-
* Rubygems: Add PQC ML-DSA support for cryptographically signed gems workflow. Pull request [#9697](https://github.com/ruby/rubygems/pull/9697) by Jun Aruga
|
|
106
|
+
* Rubygems: Add PQC ML-DSA support for cryptographically signed gems workflow. Pull request [#9697](https://github.com/ruby/rubygems/pull/9697) by Jun Aruga, Kazuki Yamaguchi and Hiroshi SHIBATA
|
|
16
107
|
* Preserve non-UTF-8 legacy gem metadata. Pull request [#9835](https://github.com/ruby/rubygems/pull/9835) by Stanislav (Stas) Katkov
|
|
17
108
|
* Add an opt-in OS credential store for gem and bundler credentials. Pull request [#9671](https://github.com/ruby/rubygems/pull/9671) by Hiroshi SHIBATA
|
|
18
109
|
* Add --cooldown to gem install, update and outdated. Pull request [#9734](https://github.com/ruby/rubygems/pull/9734) by Hiroshi SHIBATA
|
|
19
110
|
* Adopt the compact index for gem commands. Pull request [#9606](https://github.com/ruby/rubygems/pull/9606) by Hiroshi SHIBATA
|
|
20
|
-
* Replace Molinillo with PubGrub for dependency resolution. Pull request [#9402](https://github.com/ruby/rubygems/pull/9402) by Matt Larraz
|
|
111
|
+
* Replace Molinillo with PubGrub for dependency resolution. Pull request [#9402](https://github.com/ruby/rubygems/pull/9402) by Matt Larraz and Colby Swandale
|
|
21
112
|
* Replace the rubygems-specific lockfile parser with Bundler's parser. Pull request [#9564](https://github.com/ruby/rubygems/pull/9564) by Hiroshi SHIBATA
|
|
22
113
|
* Remove pessimistic versioning in gem command output. Pull request [#9550](https://github.com/ruby/rubygems/pull/9550) by Jeremy Evans
|
|
23
114
|
* Change Gem::Version#approximate_recommendation to be optimistic. Pull request [#9537](https://github.com/ruby/rubygems/pull/9537) by Jeremy Evans
|
|
@@ -52,7 +143,7 @@ Changes already released in 4.0.x are not repeated here.
|
|
|
52
143
|
|
|
53
144
|
#### Features:
|
|
54
145
|
|
|
55
|
-
* Add content addressable gems support. Pull request [#9773](https://github.com/ruby/rubygems/pull/9773) by Jenny Shen
|
|
146
|
+
* Add content addressable gems support. Pull request [#9773](https://github.com/ruby/rubygems/pull/9773) by Jenny Shen, Harriet Oughton and Gira Chawda
|
|
56
147
|
* Let the gem and bundle cooldown settings cover each other. Pull request [#9852](https://github.com/ruby/rubygems/pull/9852) by Hiroshi SHIBATA
|
|
57
148
|
* Add a `prune` setting to drop rebuildable install artifacts. Pull request [#9815](https://github.com/ruby/rubygems/pull/9815) by Hiroshi SHIBATA
|
|
58
149
|
* Add an opt-in OS credential store for gem and bundler credentials. Pull request [#9671](https://github.com/ruby/rubygems/pull/9671) by Hiroshi SHIBATA
|
|
@@ -63,8 +154,8 @@ Changes already released in 4.0.x are not repeated here.
|
|
|
63
154
|
* Reuse RubyGems' vendored SecureRandom in Bundler. Pull request [#9651](https://github.com/ruby/rubygems/pull/9651) by Hiroshi SHIBATA
|
|
64
155
|
* Reuse RubyGems' vendored URI in Bundler. Pull request [#9650](https://github.com/ruby/rubygems/pull/9650) by Hiroshi SHIBATA
|
|
65
156
|
* Fix two issues by including the ruby platform variants in the lock file. Pull request [#9556](https://github.com/ruby/rubygems/pull/9556) by Randy Stauner
|
|
66
|
-
* Fix plugin installation from gemfile. Pull request [#6957](https://github.com/ruby/rubygems/pull/6957) by Cody Cutrer
|
|
67
|
-
* Add plugin hooks for Gemfile evaluation and source fetching. Pull request [#9488](https://github.com/ruby/rubygems/pull/9488) by Hiroshi SHIBATA
|
|
157
|
+
* Fix plugin installation from gemfile. Pull request [#6957](https://github.com/ruby/rubygems/pull/6957) by Cody Cutrer, Diogo Fernandes and Hiroshi SHIBATA
|
|
158
|
+
* Add plugin hooks for Gemfile evaluation and source fetching. Pull request [#9488](https://github.com/ruby/rubygems/pull/9488) by Hiroshi SHIBATA, Cody Cutrer and Marv
|
|
68
159
|
* Use optimistic version constraints in bundle gem output. Pull request [#9533](https://github.com/ruby/rubygems/pull/9533) by Jeremy Evans
|
|
69
160
|
* Extend Gemfile `override` DSL with `:all` target and metadata fields (Phase 2). Pull request [#9530](https://github.com/ruby/rubygems/pull/9530) by Hiroshi SHIBATA
|
|
70
161
|
* Switch bundle add to use optimistic versioning by default. Pull request [#9526](https://github.com/ruby/rubygems/pull/9526) by Jeremy Evans
|
|
@@ -72,7 +163,7 @@ Changes already released in 4.0.x are not repeated here.
|
|
|
72
163
|
* Add `--no-build-extension` and `--no-install-plugin` options to gem install. Pull request [#9473](https://github.com/ruby/rubygems/pull/9473) by Hiroshi SHIBATA
|
|
73
164
|
* Include detailed dependencies when gemfile and lockfile are conflicts. Pull request [#9332](https://github.com/ruby/rubygems/pull/9332) by Hiroshi SHIBATA
|
|
74
165
|
* Implement relative path handling for plugin paths. Pull request [#9299](https://github.com/ruby/rubygems/pull/9299) by Hiroshi SHIBATA
|
|
75
|
-
* Bundler/inline: perform installation from a forked child. Pull request [#7941](https://github.com/ruby/rubygems/pull/7941) by Jean
|
|
166
|
+
* Bundler/inline: perform installation from a forked child. Pull request [#7941](https://github.com/ruby/rubygems/pull/7941) by Jean Boussier and Hiroshi SHIBATA
|
|
76
167
|
* Add global gem cache shared by RubyGems and Bundler. Pull request [#9230](https://github.com/ruby/rubygems/pull/9230) by Anthony Panozzo
|
|
77
168
|
* Update custom errors with Exception#full_message. Pull request [#8488](https://github.com/ruby/rubygems/pull/8488) by neimadTL
|
|
78
169
|
|
|
@@ -92,7 +183,7 @@ Changes already released in 4.0.x are not repeated here.
|
|
|
92
183
|
#### Breaking changes:
|
|
93
184
|
|
|
94
185
|
* Remove external tool version checks from `bundle env`. Pull request [#9593](https://github.com/ruby/rubygems/pull/9593) by Hiroshi SHIBATA
|
|
95
|
-
* Bundler: ignore patchlevel kwarg in ruby DSL. Pull request [#6023](https://github.com/ruby/rubygems/pull/6023) by Takuya N
|
|
186
|
+
* Bundler: ignore patchlevel kwarg in ruby DSL. Pull request [#6023](https://github.com/ruby/rubygems/pull/6023) by Takuya N and Hiroshi SHIBATA
|
|
96
187
|
* Unify RubyGems and Bundler documentation. Pull request [#9237](https://github.com/ruby/rubygems/pull/9237) by Hiroshi SHIBATA
|
|
97
188
|
|
|
98
189
|
#### Deprecations:
|
data/Manifest.txt
CHANGED
|
@@ -533,8 +533,6 @@ lib/rubygems/vendor/pub_grub/lib/pub_grub/version_constraint.rb
|
|
|
533
533
|
lib/rubygems/vendor/pub_grub/lib/pub_grub/version_range.rb
|
|
534
534
|
lib/rubygems/vendor/pub_grub/lib/pub_grub/version_solver.rb
|
|
535
535
|
lib/rubygems/vendor/pub_grub/lib/pub_grub/version_union.rb
|
|
536
|
-
lib/rubygems/vendor/resolv/COPYING
|
|
537
|
-
lib/rubygems/vendor/resolv/lib/resolv.rb
|
|
538
536
|
lib/rubygems/vendor/securerandom/COPYING
|
|
539
537
|
lib/rubygems/vendor/securerandom/lib/securerandom.rb
|
|
540
538
|
lib/rubygems/vendor/timeout/COPYING
|
data/SECURITY.md
CHANGED
|
@@ -2,6 +2,15 @@
|
|
|
2
2
|
|
|
3
3
|
We deeply appreciate any effort to discover and disclose security vulnerabilities responsibly.
|
|
4
4
|
|
|
5
|
-
For any security bug or issue with the RubyGems client or RubyGems.org service, please email security@rubygems.org with details about the problem or submit a report using [HackerOne](https://hackerone.com/rubygems).
|
|
5
|
+
For any security bug or issue with the RubyGems client, Bundler, or RubyGems.org service, please email security@rubygems.org with details about the problem or submit a report using [HackerOne](https://hackerone.com/rubygems). A malicious or compromised gem published on RubyGems.org can be reported the same way.
|
|
6
6
|
|
|
7
7
|
For additional information about RubyGems security, please see https://rubygems.org/pages/security.
|
|
8
|
+
|
|
9
|
+
## Out of scope for RubyGems and Bundler
|
|
10
|
+
|
|
11
|
+
The following are not treated as vulnerabilities. A technically correct report may still be fixed in public as a regular bug or hardening change.
|
|
12
|
+
|
|
13
|
+
- Code you chose to run, whether a gem you install or the `Gemfile` of a repository you run `bundle` in. A gem can ship a native extension whose build runs arbitrary code as you, and a `Gemfile` is Ruby code, so anything a crafted gem or repository does within your privileges, such as writing or deleting files or path traversal through gem metadata, adds no capability, whether or not the gem declares extensions.
|
|
14
|
+
- A gem source or mirror you chose to trust. Reports that assume the configured source is malicious or compromised are out of scope, and so is gem metadata that rubygems.org rejects at push time, since it can only arrive from a local file or a gem server you chose to trust.
|
|
15
|
+
- Your own environment and settings. This covers attacks that require write access to files RubyGems or Bundler already load on your behalf, such as plugins, `.gemrc` or `.bundle/config`, and behavior after you explicitly disable a protection such as TLS certificate verification.
|
|
16
|
+
- Issues already fixed on the `master` branch. Please check it before reporting.
|
|
@@ -4,8 +4,8 @@ module Bundler
|
|
|
4
4
|
# Represents metadata from when the Bundler gem was built.
|
|
5
5
|
module BuildMetadata
|
|
6
6
|
# begin ivars
|
|
7
|
-
@built_at = "2026-
|
|
8
|
-
@git_commit_sha = "
|
|
7
|
+
@built_at = "2026-10-08".freeze
|
|
8
|
+
@git_commit_sha = "f8b8b02".freeze
|
|
9
9
|
# end ivars
|
|
10
10
|
|
|
11
11
|
# A hash representation of the build metadata.
|
data/lib/bundler/cli/common.rb
CHANGED
|
@@ -122,6 +122,10 @@ module Bundler
|
|
|
122
122
|
raise GemNotFound, gem_not_found_message(name, Bundler.definition.dependencies)
|
|
123
123
|
end
|
|
124
124
|
|
|
125
|
+
def self.select_spec_with_match_type(name, options)
|
|
126
|
+
select_spec(name, options["exact-match"] ? nil : :regex_match)
|
|
127
|
+
end
|
|
128
|
+
|
|
125
129
|
def self.default_gem_spec(name)
|
|
126
130
|
gem_spec = Gem::Specification.find_all_by_name(name).last
|
|
127
131
|
gem_spec if gem_spec&.default_gem?
|
|
@@ -124,14 +124,10 @@ module Bundler
|
|
|
124
124
|
ctx = OpenSSL::SSL::SSLContext.new
|
|
125
125
|
supported = true
|
|
126
126
|
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
supported = false
|
|
132
|
-
end
|
|
133
|
-
else
|
|
134
|
-
supported = OpenSSL::SSL::SSLContext::METHODS.include?(:TLSv1_2) # rubocop:disable Naming/VariableNumber
|
|
127
|
+
begin
|
|
128
|
+
ctx.min_version = ctx.max_version = OpenSSL::SSL::TLS1_2_VERSION
|
|
129
|
+
rescue OpenSSL::SSL::SSLError, NameError
|
|
130
|
+
supported = false
|
|
135
131
|
end
|
|
136
132
|
|
|
137
133
|
Bundler.ui.warn(<<~EOM) unless supported
|
data/lib/bundler/cli/info.rb
CHANGED
data/lib/bundler/cli/lock.rb
CHANGED
|
@@ -74,10 +74,21 @@ module Bundler
|
|
|
74
74
|
puts definition.to_lock
|
|
75
75
|
else
|
|
76
76
|
file = options[:lockfile]
|
|
77
|
-
file =
|
|
77
|
+
file = if file
|
|
78
|
+
Pathname.new(file).expand_path
|
|
79
|
+
elsif ENV["BUNDLE_LOCKFILE"].to_s.empty?
|
|
80
|
+
definition.lockfile
|
|
81
|
+
else
|
|
82
|
+
# BUNDLE_LOCKFILE outranks the lockfile method in the Gemfile, see gemfile(5)
|
|
83
|
+
Bundler.default_lockfile
|
|
84
|
+
end
|
|
78
85
|
|
|
79
|
-
|
|
80
|
-
|
|
86
|
+
if file
|
|
87
|
+
puts "Writing lockfile to #{file}"
|
|
88
|
+
definition.write_lock(file, false)
|
|
89
|
+
else
|
|
90
|
+
Bundler.ui.warn "Not writing a lockfile because the Gemfile sets `lockfile false`"
|
|
91
|
+
end
|
|
81
92
|
end
|
|
82
93
|
|
|
83
94
|
Bundler::CLI::Common.output_cooldown_skipped_summary(definition)
|
data/lib/bundler/cli/open.rb
CHANGED
|
@@ -13,7 +13,7 @@ module Bundler
|
|
|
13
13
|
raise InvalidOption, "Cannot specify `--path` option without a value" if !@path.nil? && @path.empty?
|
|
14
14
|
editor = [ENV["BUNDLER_EDITOR"], ENV["VISUAL"], ENV["EDITOR"]].find {|e| !e.nil? && !e.empty? }
|
|
15
15
|
return Bundler.ui.info("To open a bundled gem, set $EDITOR or $BUNDLER_EDITOR") unless editor
|
|
16
|
-
return unless spec =
|
|
16
|
+
return unless spec = spec_for_gem(name)
|
|
17
17
|
if spec.default_gem?
|
|
18
18
|
Bundler.ui.info "Unable to open #{name} because it's a default gem, so the directory it would normally be installed to does not exist."
|
|
19
19
|
else
|
|
@@ -35,5 +35,11 @@ module Bundler
|
|
|
35
35
|
require "shellwords"
|
|
36
36
|
Shellwords.split(editor)
|
|
37
37
|
end
|
|
38
|
+
|
|
39
|
+
private
|
|
40
|
+
|
|
41
|
+
def spec_for_gem(name)
|
|
42
|
+
Bundler::CLI::Common.select_spec_with_match_type(name, options)
|
|
43
|
+
end
|
|
38
44
|
end
|
|
39
45
|
end
|
data/lib/bundler/cli/outdated.rb
CHANGED
|
@@ -90,7 +90,9 @@ module Bundler
|
|
|
90
90
|
dependency = current_dependencies[current_spec.name]
|
|
91
91
|
groups = ""
|
|
92
92
|
if dependency && !options[:parseable]
|
|
93
|
-
groups = dependency.groups
|
|
93
|
+
groups = dependency.groups
|
|
94
|
+
groups = groups.sort if options_include_groups
|
|
95
|
+
groups = groups.join(", ")
|
|
94
96
|
end
|
|
95
97
|
|
|
96
98
|
outdated_gems << {
|
|
@@ -101,13 +103,11 @@ module Bundler
|
|
|
101
103
|
}
|
|
102
104
|
end
|
|
103
105
|
|
|
104
|
-
relevant_outdated_gems = if
|
|
105
|
-
outdated_gems.
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
gems
|
|
110
|
-
end.compact
|
|
106
|
+
relevant_outdated_gems = if options[:groups]
|
|
107
|
+
without_groups, with_groups = outdated_gems.partition {|g| g[:groups].empty? }
|
|
108
|
+
with_groups.group_by {|g| g[:groups] }.sort.flat_map(&:last) + without_groups
|
|
109
|
+
elsif options_include_groups
|
|
110
|
+
outdated_gems.select {|g| g[:groups].split(", ").include?(options[:group]) }
|
|
111
111
|
else
|
|
112
112
|
outdated_gems
|
|
113
113
|
end
|
|
@@ -333,8 +333,6 @@ module Bundler
|
|
|
333
333
|
|
|
334
334
|
Bundler.ui.info justify(header, column_sizes)
|
|
335
335
|
|
|
336
|
-
data.sort_by! {|row| row[0] }
|
|
337
|
-
|
|
338
336
|
data.each do |row|
|
|
339
337
|
Bundler.ui.info justify(row, column_sizes)
|
|
340
338
|
end
|
data/lib/bundler/cli/platform.rb
CHANGED
|
@@ -25,7 +25,7 @@ module Bundler
|
|
|
25
25
|
else
|
|
26
26
|
platforms = Bundler.definition.platforms.map {|p| "* #{p}" }
|
|
27
27
|
|
|
28
|
-
output <<
|
|
28
|
+
output << platform_info
|
|
29
29
|
output << "Your app has gems that work on these platforms:\n#{platforms.join("\n")}"
|
|
30
30
|
|
|
31
31
|
if ruby_version
|
|
@@ -44,5 +44,19 @@ module Bundler
|
|
|
44
44
|
|
|
45
45
|
Bundler.ui.info output.join("\n\n")
|
|
46
46
|
end
|
|
47
|
+
|
|
48
|
+
private
|
|
49
|
+
|
|
50
|
+
def platform_info
|
|
51
|
+
info = "Your platform is: #{Gem::Platform.local}"
|
|
52
|
+
return info if Bundler.local_platform == Gem::Platform.local
|
|
53
|
+
|
|
54
|
+
info + "\nHowever, your effective platform is: #{Bundler.local_platform} " \
|
|
55
|
+
"(because force_ruby_platform is #{force_ruby_platform_origin})"
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
def force_ruby_platform_origin
|
|
59
|
+
Bundler.settings.pretty_values_for(:force_ruby_platform).first.sub(/\ASet /, "set ")
|
|
60
|
+
end
|
|
47
61
|
end
|
|
48
62
|
end
|
data/lib/bundler/cli/show.rb
CHANGED
|
@@ -20,7 +20,7 @@ module Bundler
|
|
|
20
20
|
if gem_name == "bundler"
|
|
21
21
|
path = File.expand_path("../../..", __dir__)
|
|
22
22
|
else
|
|
23
|
-
spec =
|
|
23
|
+
spec = spec_for_gem(gem_name)
|
|
24
24
|
return unless spec
|
|
25
25
|
path = spec.full_gem_path
|
|
26
26
|
unless File.directory?(path)
|
|
@@ -55,6 +55,10 @@ module Bundler
|
|
|
55
55
|
|
|
56
56
|
private
|
|
57
57
|
|
|
58
|
+
def spec_for_gem(name)
|
|
59
|
+
Bundler::CLI::Common.select_spec_with_match_type(name, options)
|
|
60
|
+
end
|
|
61
|
+
|
|
58
62
|
def fetch_latest_specs
|
|
59
63
|
definition = Bundler.definition(true)
|
|
60
64
|
Bundler.ui.info "Fetching remote specs for outdated check...\n\n"
|
data/lib/bundler/cli/update.rb
CHANGED
|
@@ -13,7 +13,7 @@ module Bundler
|
|
|
13
13
|
|
|
14
14
|
update_bundler = options[:bundler]
|
|
15
15
|
|
|
16
|
-
Bundler.self_manager.update_bundler_and_restart_with_it_if_needed(update_bundler) if update_bundler
|
|
16
|
+
Bundler.self_manager.update_bundler_and_restart_with_it_if_needed(update_bundler, pre: options[:pre]) if update_bundler
|
|
17
17
|
|
|
18
18
|
sources = Array(options[:source])
|
|
19
19
|
groups = Array(options[:group]).map(&:to_sym)
|
data/lib/bundler/cli.rb
CHANGED
|
@@ -177,7 +177,7 @@ module Bundler
|
|
|
177
177
|
else
|
|
178
178
|
puts File.read("#{man_path}/#{File.basename(man_page)}.ronn")
|
|
179
179
|
end
|
|
180
|
-
elsif command_path =
|
|
180
|
+
elsif command_path = self.class.bundler_command_path(cli)
|
|
181
181
|
Kernel.exec(command_path, "--help")
|
|
182
182
|
else
|
|
183
183
|
super
|
|
@@ -189,11 +189,23 @@ module Bundler
|
|
|
189
189
|
return Bundler::Plugin.exec_command(command, ARGV[1..-1])
|
|
190
190
|
end
|
|
191
191
|
|
|
192
|
-
return super unless command_path =
|
|
192
|
+
return super unless command_path = bundler_command_path(command)
|
|
193
193
|
|
|
194
194
|
Kernel.exec(command_path, *ARGV[1..-1])
|
|
195
195
|
end
|
|
196
196
|
|
|
197
|
+
# Only PATH is searched, unlike Bundler.which, which also finds a file in
|
|
198
|
+
# the current directory and returns a bare name that Kernel.exec cannot run.
|
|
199
|
+
def self.bundler_command_path(command)
|
|
200
|
+
ENV.fetch("PATH", "").split(File::PATH_SEPARATOR).each do |path|
|
|
201
|
+
path = path[1..-2] if path.start_with?('"') && path.end_with?('"')
|
|
202
|
+
command_path = Bundler.find_executable(File.expand_path("bundler-#{command}", path))
|
|
203
|
+
return command_path if command_path
|
|
204
|
+
end
|
|
205
|
+
|
|
206
|
+
nil
|
|
207
|
+
end
|
|
208
|
+
|
|
197
209
|
desc "init [OPTIONS]", "Generates a Gemfile into the current working directory"
|
|
198
210
|
long_desc <<-D
|
|
199
211
|
Init generates a default Gemfile in the current working directory. When adding a
|
|
@@ -319,10 +331,10 @@ module Bundler
|
|
|
319
331
|
method_option "source", type: :array, banner: "Update a specific source (and all gems associated with it)"
|
|
320
332
|
method_option "force", type: :boolean, aliases: "--redownload", banner: "Force reinstalling every gem, even if already installed"
|
|
321
333
|
method_option "ruby", type: :boolean, banner: "Update ruby specified in Gemfile.lock"
|
|
322
|
-
method_option "bundler", type: :string, lazy_default: "
|
|
334
|
+
method_option "bundler", type: :string, lazy_default: ">= #{Bundler::VERSION}", banner: "Update the locked version of bundler"
|
|
323
335
|
method_option "patch", type: :boolean, banner: "Prefer updating only to next patch version"
|
|
324
336
|
method_option "minor", type: :boolean, banner: "Prefer updating only to next minor version"
|
|
325
|
-
method_option "major", type: :boolean, banner: "Prefer updating to
|
|
337
|
+
method_option "major", type: :boolean, banner: "Prefer updating to latest major version (default)"
|
|
326
338
|
method_option "pre", type: :boolean, banner: "Always choose the highest allowed version when updating gems, regardless of prerelease status"
|
|
327
339
|
method_option "strict", type: :boolean, banner: "Do not allow any gem to be updated past latest --patch | --minor | --major"
|
|
328
340
|
method_option "conservative", type: :boolean, banner: "Use bundle install conservative update behavior and do not allow shared dependencies to be updated."
|
|
@@ -342,6 +354,7 @@ module Bundler
|
|
|
342
354
|
D
|
|
343
355
|
method_option "paths", type: :boolean, banner: "List the paths of all gems that are required by your Gemfile."
|
|
344
356
|
method_option "outdated", type: :boolean, banner: "Show verbose output including whether gems are outdated (removed)."
|
|
357
|
+
method_option "exact-match", type: :boolean, banner: "Only match gems whose names exactly match the given name"
|
|
345
358
|
def show(gem_name = nil)
|
|
346
359
|
if ARGV.include?("--outdated")
|
|
347
360
|
removed_message = "the `--outdated` flag to `bundle show` has been removed in favor of `bundle show --verbose`"
|
|
@@ -367,6 +380,7 @@ module Bundler
|
|
|
367
380
|
desc "info GEM [OPTIONS]", "Show information for the given gem"
|
|
368
381
|
method_option "path", type: :boolean, banner: "Print full path to gem"
|
|
369
382
|
method_option "version", type: :boolean, banner: "Print gem version"
|
|
383
|
+
method_option "exact-match", type: :boolean, banner: "Only match gems whose names exactly match the given name"
|
|
370
384
|
def info(gem_name)
|
|
371
385
|
require_relative "cli/info"
|
|
372
386
|
Info.new(options, gem_name).run
|
|
@@ -434,7 +448,7 @@ module Bundler
|
|
|
434
448
|
method_option "filter-strict", type: :boolean, aliases: "--strict", banner: "Only list newer versions allowed by your Gemfile requirements"
|
|
435
449
|
method_option "update-strict", type: :boolean, banner: "Strict conservative resolution, do not allow any gem to be updated past latest --patch | --minor | --major"
|
|
436
450
|
method_option "minor", type: :boolean, banner: "Prefer updating only to next minor version"
|
|
437
|
-
method_option "major", type: :boolean, banner: "Prefer updating to
|
|
451
|
+
method_option "major", type: :boolean, banner: "Prefer updating to latest major version (default)"
|
|
438
452
|
method_option "patch", type: :boolean, banner: "Prefer updating only to next patch version"
|
|
439
453
|
method_option "filter-major", type: :boolean, banner: "Only list major newer versions"
|
|
440
454
|
method_option "filter-minor", type: :boolean, banner: "Only list minor newer versions"
|
|
@@ -530,6 +544,7 @@ module Bundler
|
|
|
530
544
|
|
|
531
545
|
desc "open GEM", "Opens the source directory of the given bundled gem"
|
|
532
546
|
method_option "path", type: :string, lazy_default: "", banner: "Open relative path of the gem source."
|
|
547
|
+
method_option "exact-match", type: :boolean, banner: "Only match gems whose names exactly match the given name"
|
|
533
548
|
def open(name)
|
|
534
549
|
require_relative "cli/open"
|
|
535
550
|
Open.new(options, name).run
|
|
@@ -640,11 +655,11 @@ module Bundler
|
|
|
640
655
|
method_option "normalize-platforms", type: :boolean, default: false, banner: "Normalize lockfile platforms"
|
|
641
656
|
method_option "patch", type: :boolean, banner: "If updating, prefer updating only to next patch version"
|
|
642
657
|
method_option "minor", type: :boolean, banner: "If updating, prefer updating only to next minor version"
|
|
643
|
-
method_option "major", type: :boolean, banner: "If updating, prefer updating to
|
|
658
|
+
method_option "major", type: :boolean, banner: "If updating, prefer updating to latest major version (default)"
|
|
644
659
|
method_option "pre", type: :boolean, banner: "If updating, always choose the highest allowed version, regardless of prerelease status"
|
|
645
660
|
method_option "strict", type: :boolean, banner: "If updating, do not allow any gem to be updated past latest --patch | --minor | --major"
|
|
646
661
|
method_option "conservative", type: :boolean, banner: "If updating, use bundle install conservative update behavior and do not allow shared dependencies to be updated"
|
|
647
|
-
method_option "bundler", type: :string, lazy_default: "
|
|
662
|
+
method_option "bundler", type: :string, lazy_default: ">= #{Bundler::VERSION}", banner: "Update the locked version of bundler"
|
|
648
663
|
method_option "cooldown", type: :numeric, banner: "Only consider gem versions published at least N days ago. Use 0 to disable."
|
|
649
664
|
def lock
|
|
650
665
|
require_relative "cli/lock"
|
data/lib/bundler/constants.rb
CHANGED
data/lib/bundler/definition.rb
CHANGED
|
@@ -198,7 +198,7 @@ module Bundler
|
|
|
198
198
|
|
|
199
199
|
sources.cached!
|
|
200
200
|
|
|
201
|
-
if options[:add_checksums] || (!options[:local] && (install_needed? || refetch_needed?(options)))
|
|
201
|
+
if options[:add_checksums] || (!options[:local] && (install_needed? || refetch_needed?(options) || @locked_spec_with_empty_checksums))
|
|
202
202
|
sources.remote!
|
|
203
203
|
true
|
|
204
204
|
else
|
|
@@ -346,7 +346,9 @@ module Bundler
|
|
|
346
346
|
#
|
|
347
347
|
# @return [SpecSet] resolved dependencies
|
|
348
348
|
def resolve
|
|
349
|
-
@resolve
|
|
349
|
+
return @resolve if @resolve
|
|
350
|
+
|
|
351
|
+
@resolve = if Bundler.frozen_bundle?
|
|
350
352
|
Bundler.ui.debug "Frozen, using resolution from the lockfile"
|
|
351
353
|
@locked_specs
|
|
352
354
|
elsif no_resolve_needed?
|
|
@@ -366,6 +368,8 @@ module Bundler
|
|
|
366
368
|
|
|
367
369
|
start_resolution
|
|
368
370
|
end
|
|
371
|
+
warn_inert_overrides(@resolve)
|
|
372
|
+
@resolve
|
|
369
373
|
end
|
|
370
374
|
|
|
371
375
|
def spec_git_paths
|
|
@@ -650,7 +654,7 @@ module Bundler
|
|
|
650
654
|
@missing_lockfile_dep ||
|
|
651
655
|
@unlocking_bundler ||
|
|
652
656
|
@locked_spec_with_missing_checksums ||
|
|
653
|
-
|
|
657
|
+
empty_checksums_actionable? ||
|
|
654
658
|
@locked_spec_with_missing_deps ||
|
|
655
659
|
@locked_spec_with_invalid_deps
|
|
656
660
|
end
|
|
@@ -659,6 +663,16 @@ module Bundler
|
|
|
659
663
|
unlocking? || something_changed?
|
|
660
664
|
end
|
|
661
665
|
|
|
666
|
+
# Only a remote fetch can fill an empty CHECKSUMS entry, so it justifies a
|
|
667
|
+
# resolution only when one is coming. Resolving locally for it would repeat
|
|
668
|
+
# on every `Bundler.setup` without changing the lockfile. Frozen mode still
|
|
669
|
+
# has to refuse the entry.
|
|
670
|
+
def empty_checksums_actionable?
|
|
671
|
+
return false unless @locked_spec_with_empty_checksums
|
|
672
|
+
|
|
673
|
+
Bundler.frozen_bundle? || !sources.local_mode?
|
|
674
|
+
end
|
|
675
|
+
|
|
662
676
|
def should_add_extra_platforms?
|
|
663
677
|
!lockfile_exists? && Bundler::MatchPlatform.generic_local_platform_is_ruby? && !Bundler.settings[:force_ruby_platform]
|
|
664
678
|
end
|
|
@@ -1095,25 +1109,61 @@ module Bundler
|
|
|
1095
1109
|
end
|
|
1096
1110
|
|
|
1097
1111
|
converge_overrides_outside_dependencies
|
|
1112
|
+
converge_rewritten_dependencies
|
|
1098
1113
|
|
|
1099
1114
|
@changed_dependencies.any?
|
|
1100
1115
|
end
|
|
1101
1116
|
|
|
1102
|
-
|
|
1117
|
+
# The lockfile keeps the upstream dependencies of every gem, so a gem that
|
|
1118
|
+
# a `from:`/`to:` override cut loose stays locked until a resolution drops
|
|
1119
|
+
# it.
|
|
1120
|
+
def converge_rewritten_dependencies
|
|
1103
1121
|
@overrides.each do |override|
|
|
1104
|
-
|
|
1105
|
-
# fresh resolution (no lockfile) or when the user runs `bundle update`.
|
|
1106
|
-
# Forcing a full re-resolve from a single :all directive would surprise
|
|
1107
|
-
# users with unrelated dependency churn.
|
|
1108
|
-
next unless override.target.is_a?(String)
|
|
1122
|
+
next unless override.from
|
|
1109
1123
|
|
|
1110
1124
|
name = override.target
|
|
1111
|
-
next if @changed_dependencies.include?(name)
|
|
1112
1125
|
next if @originally_locked_specs[name].empty?
|
|
1113
|
-
|
|
1126
|
+
next if @dependencies.any? {|d| d.name == name }
|
|
1127
|
+
|
|
1128
|
+
still_required = @originally_locked_specs.any? do |s|
|
|
1129
|
+
Override.rewrite_dependencies(@overrides, s.name, s.runtime_dependencies).any? {|d| d.name == name }
|
|
1130
|
+
end
|
|
1131
|
+
next if still_required
|
|
1132
|
+
|
|
1133
|
+
@gems_to_unlock << name
|
|
1134
|
+
@changed_dependencies << name
|
|
1135
|
+
end
|
|
1136
|
+
end
|
|
1137
|
+
|
|
1138
|
+
# A misspelled `from:` gem leaves the override with nothing to rewrite.
|
|
1139
|
+
def warn_inert_overrides(specs)
|
|
1140
|
+
@overrides.each do |override|
|
|
1141
|
+
next unless override.from
|
|
1142
|
+
next if specs[override.from].any? {|s| s.dependencies.any? {|d| d.name == override.target } }
|
|
1143
|
+
|
|
1144
|
+
Bundler.ui.warn "#{override} has no effect because the bundle has no #{override.from} that depends on #{override.target}"
|
|
1145
|
+
end
|
|
1146
|
+
end
|
|
1147
|
+
|
|
1148
|
+
def converge_overrides_outside_dependencies
|
|
1149
|
+
@overrides.each do |override|
|
|
1150
|
+
# :all and metadata overrides are intentionally not pre-unlocked. The
|
|
1151
|
+
# lockfile does not record overrides, so unlocking for them would
|
|
1152
|
+
# re-resolve on every run and reject every frozen install. Install-time
|
|
1153
|
+
# compatibility checks already honor them for locked specs, and they
|
|
1154
|
+
# affect resolution on a fresh lock or when the user runs `bundle update`.
|
|
1155
|
+
next unless override.target.is_a?(String) && override.field == :version
|
|
1156
|
+
|
|
1157
|
+
name = override.target
|
|
1158
|
+
# Overrides on direct deps are detected in the per-dep
|
|
1114
1159
|
# converge_dependencies loop via apply_override_to + matches_spec?.
|
|
1115
|
-
|
|
1116
|
-
|
|
1160
|
+
next if @dependencies.any? {|d| d.name == name }
|
|
1161
|
+
|
|
1162
|
+
locked_specs = @originally_locked_specs[name]
|
|
1163
|
+
next if locked_specs.empty?
|
|
1164
|
+
# Only a version string constrains on its own. :ignore_upper and nil
|
|
1165
|
+
# loosen requirements the lockfile already satisfies.
|
|
1166
|
+
next if override.apply_to(Gem::Requirement.default).satisfied_by?(locked_specs.first.version)
|
|
1117
1167
|
|
|
1118
1168
|
@gems_to_unlock << name
|
|
1119
1169
|
@changed_dependencies << name
|
|
@@ -1342,7 +1392,7 @@ module Bundler
|
|
|
1342
1392
|
end
|
|
1343
1393
|
|
|
1344
1394
|
def source_map
|
|
1345
|
-
@source_map ||= SourceMap.new(sources, dependencies, @locked_specs)
|
|
1395
|
+
@source_map ||= SourceMap.new(sources, dependencies, @locked_specs, @overrides.filter_map {|o| o.operation if o.from })
|
|
1346
1396
|
end
|
|
1347
1397
|
|
|
1348
1398
|
def new_resolver_for_full_update
|