bundler 2.6.5 → 2.6.7
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 +52 -6
- data/lib/bundler/build_metadata.rb +2 -2
- data/lib/bundler/checksum.rb +22 -12
- data/lib/bundler/cli/doctor.rb +14 -14
- data/lib/bundler/cli/inject.rb +2 -2
- data/lib/bundler/cli/lock.rb +2 -1
- data/lib/bundler/compact_index_client/cache.rb +1 -1
- data/lib/bundler/compact_index_client/parser.rb +1 -1
- data/lib/bundler/compact_index_client/updater.rb +2 -1
- data/lib/bundler/definition.rb +108 -91
- data/lib/bundler/dsl.rb +2 -3
- data/lib/bundler/errors.rb +18 -0
- data/lib/bundler/injector.rb +9 -9
- data/lib/bundler/lazy_specification.rb +9 -1
- data/lib/bundler/lockfile_parser.rb +8 -5
- data/lib/bundler/man/bundle-add.1 +1 -1
- data/lib/bundler/man/bundle-binstubs.1 +1 -1
- data/lib/bundler/man/bundle-cache.1 +1 -1
- data/lib/bundler/man/bundle-check.1 +1 -1
- data/lib/bundler/man/bundle-clean.1 +1 -1
- data/lib/bundler/man/bundle-config.1 +6 -6
- data/lib/bundler/man/bundle-config.1.ronn +9 -4
- data/lib/bundler/man/bundle-console.1 +1 -1
- data/lib/bundler/man/bundle-doctor.1 +1 -1
- data/lib/bundler/man/bundle-env.1 +1 -1
- data/lib/bundler/man/bundle-exec.1 +3 -3
- data/lib/bundler/man/bundle-exec.1.ronn +2 -2
- data/lib/bundler/man/bundle-fund.1 +1 -1
- data/lib/bundler/man/bundle-gem.1 +1 -1
- data/lib/bundler/man/bundle-help.1 +1 -1
- data/lib/bundler/man/bundle-info.1 +1 -1
- data/lib/bundler/man/bundle-init.1 +1 -1
- data/lib/bundler/man/bundle-inject.1 +1 -1
- data/lib/bundler/man/bundle-install.1 +1 -1
- data/lib/bundler/man/bundle-issue.1 +1 -1
- data/lib/bundler/man/bundle-licenses.1 +1 -1
- data/lib/bundler/man/bundle-list.1 +1 -1
- data/lib/bundler/man/bundle-lock.1 +1 -1
- data/lib/bundler/man/bundle-open.1 +1 -1
- data/lib/bundler/man/bundle-outdated.1 +1 -1
- data/lib/bundler/man/bundle-platform.1 +1 -1
- data/lib/bundler/man/bundle-plugin.1 +1 -1
- data/lib/bundler/man/bundle-pristine.1 +1 -1
- data/lib/bundler/man/bundle-remove.1 +1 -1
- data/lib/bundler/man/bundle-show.1 +1 -1
- data/lib/bundler/man/bundle-update.1 +1 -1
- data/lib/bundler/man/bundle-version.1 +1 -1
- data/lib/bundler/man/bundle-viz.1 +1 -1
- data/lib/bundler/man/bundle.1 +1 -1
- data/lib/bundler/man/gemfile.5 +1 -1
- data/lib/bundler/plugin/api/source.rb +1 -1
- data/lib/bundler/plugin/index.rb +1 -1
- data/lib/bundler/plugin/installer/path.rb +8 -0
- data/lib/bundler/plugin.rb +1 -1
- data/lib/bundler/resolver/candidate.rb +12 -9
- data/lib/bundler/resolver/strategy.rb +40 -0
- data/lib/bundler/resolver.rb +11 -22
- data/lib/bundler/rubygems_ext.rb +15 -0
- data/lib/bundler/runtime.rb +8 -5
- data/lib/bundler/shared_helpers.rb +4 -0
- data/lib/bundler/source/gemspec.rb +1 -4
- data/lib/bundler/source/git/git_proxy.rb +14 -3
- data/lib/bundler/source/git.rb +5 -1
- data/lib/bundler/source/path.rb +2 -2
- data/lib/bundler/source/rubygems/remote.rb +11 -3
- data/lib/bundler/source_list.rb +29 -11
- data/lib/bundler/spec_set.rb +11 -4
- data/lib/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb +53 -3
- data/lib/bundler/vendor/connection_pool/lib/connection_pool/version.rb +1 -1
- data/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +11 -0
- data/lib/bundler/vendor/pub_grub/lib/pub_grub/basic_package_source.rb +4 -24
- data/lib/bundler/vendor/pub_grub/lib/pub_grub/strategy.rb +42 -0
- data/lib/bundler/vendor/pub_grub/lib/pub_grub/version_range.rb +20 -8
- data/lib/bundler/vendor/pub_grub/lib/pub_grub/version_solver.rb +17 -29
- data/lib/bundler/vendor/uri/lib/uri/common.rb +7 -3
- data/lib/bundler/vendor/uri/lib/uri/generic.rb +12 -11
- data/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb +6 -6
- data/lib/bundler/vendor/uri/lib/uri/version.rb +1 -1
- data/lib/bundler/version.rb +1 -1
- metadata +5 -4
- data/lib/bundler/compact_index_client/gem_parser.rb +0 -32
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9135fec12672acb616058b986f9ee528f8dbaf5b5452a413a93bf4188f381813
|
4
|
+
data.tar.gz: 8b5ffbe95febae6b17210c94972b43ecf3009c665720e976156a8ecbb4d0cc8b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 246ae795176220dde699c7d808bc876d4cbf0180b4eb58521efb6785ab699266ffbfbee550380e4e98c002a74cfca386eb7e238d37286775b7a870b4521abcda
|
7
|
+
data.tar.gz: '040083539b5e2bd6d968a80de1314c65bc46bb3652189dc0849b73653aed0825993770adc5e7eca99099078be3aba7b47cc34fe10e4c8bfa5fc6927328aaf12f'
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,49 @@
|
|
1
|
+
# 2.6.7 (April 3, 2025)
|
2
|
+
|
3
|
+
## Enhancements:
|
4
|
+
|
5
|
+
- Fix crash when server compact index API implementation only lists versions [#8594](https://github.com/rubygems/rubygems/pull/8594)
|
6
|
+
- Fix lockfile when a gem ends up accidentally under two different sources [#8579](https://github.com/rubygems/rubygems/pull/8579)
|
7
|
+
- Refuse to install and print an error in frozen mode if some entries are missing in CHECKSUMS lockfile section [#8563](https://github.com/rubygems/rubygems/pull/8563)
|
8
|
+
- Support git 2.49 [#8581](https://github.com/rubygems/rubygems/pull/8581)
|
9
|
+
- Improve wording of a few messages [#8570](https://github.com/rubygems/rubygems/pull/8570)
|
10
|
+
|
11
|
+
## Bug fixes:
|
12
|
+
|
13
|
+
- Fix `bundle add` sometimes generating invalid lockfiles [#8586](https://github.com/rubygems/rubygems/pull/8586)
|
14
|
+
|
15
|
+
## Performance:
|
16
|
+
|
17
|
+
- Implement pub_grub strategy interface [#8589](https://github.com/rubygems/rubygems/pull/8589)
|
18
|
+
- Update vendored pub_grub [#8571](https://github.com/rubygems/rubygems/pull/8571)
|
19
|
+
|
20
|
+
# 2.6.6 (March 13, 2025)
|
21
|
+
|
22
|
+
## Enhancements:
|
23
|
+
|
24
|
+
- Fix `ENAMETOOLONG` error when creating compact index cache [#5578](https://github.com/rubygems/rubygems/pull/5578)
|
25
|
+
- Use shorthand hash syntax for bundle add [#8547](https://github.com/rubygems/rubygems/pull/8547)
|
26
|
+
- Update vendored uri to 1.0.3 [#8534](https://github.com/rubygems/rubygems/pull/8534)
|
27
|
+
- Retry gracefully on blank partial response in compact index [#8524](https://github.com/rubygems/rubygems/pull/8524)
|
28
|
+
- Give a better error when trying to write the lock file on a read-only filesystem [#5920](https://github.com/rubygems/rubygems/pull/5920)
|
29
|
+
- Improve log messages when lockfile platforms are added [#8523](https://github.com/rubygems/rubygems/pull/8523)
|
30
|
+
- Allow noop `bundle install` to work on read-only or protected folders [#8519](https://github.com/rubygems/rubygems/pull/8519)
|
31
|
+
|
32
|
+
## Bug fixes:
|
33
|
+
|
34
|
+
- Detect partial gem installs from a git source so that they are reinstalled on a successive run [#8539](https://github.com/rubygems/rubygems/pull/8539)
|
35
|
+
- Modify `bundle doctor` to not report issue when files aren't writable [#8520](https://github.com/rubygems/rubygems/pull/8520)
|
36
|
+
|
37
|
+
## Performance:
|
38
|
+
|
39
|
+
- Optimize resolution by removing an array allocation from `Candidate#<=>` [#8559](https://github.com/rubygems/rubygems/pull/8559)
|
40
|
+
|
41
|
+
## Documentation:
|
42
|
+
|
43
|
+
- Update docs for with/without consistency [#8555](https://github.com/rubygems/rubygems/pull/8555)
|
44
|
+
- Recommend non-deprecated methods in `bundle exec` documentation [#8537](https://github.com/rubygems/rubygems/pull/8537)
|
45
|
+
- Hint about default group when using `only` configuration option [#8536](https://github.com/rubygems/rubygems/pull/8536)
|
46
|
+
|
1
47
|
# 2.6.5 (February 20, 2025)
|
2
48
|
|
3
49
|
## Enhancements:
|
@@ -1291,7 +1337,7 @@
|
|
1291
1337
|
- Enable parallel installation on Windows by default [#4822](https://github.com/rubygems/rubygems/pull/4822)
|
1292
1338
|
- More logging when compact index is not used and we fallback to other APIs [#4546](https://github.com/rubygems/rubygems/pull/4546)
|
1293
1339
|
- `bundle gem` generated MiniTest file and class now start with 'test' [#3893](https://github.com/rubygems/rubygems/pull/3893)
|
1294
|
-
- Add `Bundler::Definition.no_lock` accessor for skipping
|
1340
|
+
- Add `Bundler::Definition.no_lock` accessor for skipping lockfile creation/update [#3401](https://github.com/rubygems/rubygems/pull/3401)
|
1295
1341
|
|
1296
1342
|
## Bug fixes:
|
1297
1343
|
|
@@ -2033,7 +2079,7 @@
|
|
2033
2079
|
- Fix `bundle outdated --group NAME` when the group is listed second in the Gemfile ([#6116](https://github.com/rubygems/bundler/pull/6116))
|
2034
2080
|
- Improve conflict resolution messages by not calling "ruby" a gem when conflict happens in the `required_ruby_version`, and by filtering out requirements that didn't contribute to the conflict ([#6647](https://github.com/rubygems/bundler/pull/6647))
|
2035
2081
|
- Avoid fetching and rebuilding git gems whenever any gem is changed in the Gemfile ([#6711](https://github.com/rubygems/bundler/pull/6711))
|
2036
|
-
- Include the exact bundler version in the
|
2082
|
+
- Include the exact bundler version in the lockfile in the suggested command when bundler warns about version mismatches of itself [#6971](https://github.com/rubygems/bundler/pull/6971)
|
2037
2083
|
- Fix plugins being installed every time a command is run #[#6978](https://github.com/rubygems/bundler/pull/6978)
|
2038
2084
|
- Fallback to sequentially fetching specs on 429s [#6728](https://github.com/rubygems/bundler/pull/6728)
|
2039
2085
|
- Make `bundle clean` also clean native extensions for gems with a git source [#7058](https://github.com/rubygems/bundler/pull/7058)
|
@@ -3498,7 +3544,7 @@ Changes
|
|
3498
3544
|
|
3499
3545
|
## Bug fixes:
|
3500
3546
|
|
3501
|
-
- Revert gem source sorting in
|
3547
|
+
- Revert gem source sorting in lockfiles (@indirect)
|
3502
3548
|
|
3503
3549
|
# 1.7.1 (August 20, 2014)
|
3504
3550
|
|
@@ -3598,7 +3644,7 @@ Changes
|
|
3598
3644
|
- redirects across hosts now work on rubies without OpenSSL ([#2686](https://github.com/rubygems/bundler/issues/2686), @grddev)
|
3599
3645
|
- gemspecs now handle filenames with newlines ([#2634](https://github.com/rubygems/bundler/issues/2634), @jasonmp85)
|
3600
3646
|
- support escaped characters in usernames and passwords (@punkie)
|
3601
|
-
- no more exception on `update GEM` without
|
3647
|
+
- no more exception on `update GEM` without lockfile (@simi)
|
3602
3648
|
- allow long config values ([#2823](https://github.com/rubygems/bundler/issues/2823), @kgrz)
|
3603
3649
|
- cache successfully even locked to gems shipped with Ruby ([#2869](https://github.com/rubygems/bundler/issues/2869), @aughr)
|
3604
3650
|
- respect NO_PROXY even if a proxy is configured ([#2878](https://github.com/rubygems/bundler/issues/2878), @stlay)
|
@@ -3746,7 +3792,7 @@ Changes
|
|
3746
3792
|
|
3747
3793
|
## Bug fixes:
|
3748
3794
|
|
3749
|
-
- make gemspec path option preserve relative paths in
|
3795
|
+
- make gemspec path option preserve relative paths in lockfile (@bwillis)
|
3750
3796
|
- use umask when creating binstubs ([#1618](https://github.com/rubygems/bundler/issues/1618), @v-yarotsky)
|
3751
3797
|
- warn if graphviz is not installed ([#2435](https://github.com/rubygems/bundler/issues/2435), @Agis-)
|
3752
3798
|
- show git errors while loading gemspecs
|
@@ -4635,7 +4681,7 @@ Changes
|
|
4635
4681
|
- Skeleton gemspec now works with older versions of git
|
4636
4682
|
- Fix shell quoting and ref fetching in GemHelper
|
4637
4683
|
- Disable colored output in --deployment
|
4638
|
-
- Preserve line endings in
|
4684
|
+
- Preserve line endings in lockfile
|
4639
4685
|
|
4640
4686
|
## Features:
|
4641
4687
|
|
@@ -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 = "
|
8
|
-
@git_commit_sha = "
|
7
|
+
@built_at = "1980-01-02".freeze
|
8
|
+
@git_commit_sha = "32896b3570e".freeze
|
9
9
|
@release = true
|
10
10
|
# end ivars
|
11
11
|
|
data/lib/bundler/checksum.rb
CHANGED
@@ -126,7 +126,7 @@ module Bundler
|
|
126
126
|
end
|
127
127
|
|
128
128
|
def removable?
|
129
|
-
|
129
|
+
[:lock, :gem].include?(type)
|
130
130
|
end
|
131
131
|
|
132
132
|
def ==(other)
|
@@ -190,7 +190,7 @@ module Bundler
|
|
190
190
|
def replace(spec, checksum)
|
191
191
|
return unless checksum
|
192
192
|
|
193
|
-
lock_name = spec.
|
193
|
+
lock_name = spec.lock_name
|
194
194
|
@store_mutex.synchronize do
|
195
195
|
existing = fetch_checksum(lock_name, checksum.algo)
|
196
196
|
if !existing || existing.same_source?(checksum)
|
@@ -201,10 +201,12 @@ module Bundler
|
|
201
201
|
end
|
202
202
|
end
|
203
203
|
|
204
|
-
def
|
205
|
-
|
204
|
+
def missing?(spec)
|
205
|
+
@store[spec.lock_name].nil?
|
206
|
+
end
|
206
207
|
|
207
|
-
|
208
|
+
def register(spec, checksum)
|
209
|
+
register_checksum(spec.lock_name, checksum)
|
208
210
|
end
|
209
211
|
|
210
212
|
def merge!(other)
|
@@ -216,9 +218,9 @@ module Bundler
|
|
216
218
|
end
|
217
219
|
|
218
220
|
def to_lock(spec)
|
219
|
-
lock_name = spec.
|
221
|
+
lock_name = spec.lock_name
|
220
222
|
checksums = @store[lock_name]
|
221
|
-
if checksums
|
223
|
+
if checksums&.any?
|
222
224
|
"#{lock_name} #{checksums.values.map(&:to_lock).sort.join(",")}"
|
223
225
|
else
|
224
226
|
lock_name
|
@@ -229,11 +231,15 @@ module Bundler
|
|
229
231
|
|
230
232
|
def register_checksum(lock_name, checksum)
|
231
233
|
@store_mutex.synchronize do
|
232
|
-
|
233
|
-
|
234
|
-
|
234
|
+
if checksum
|
235
|
+
existing = fetch_checksum(lock_name, checksum.algo)
|
236
|
+
if existing
|
237
|
+
merge_checksum(lock_name, checksum, existing)
|
238
|
+
else
|
239
|
+
store_checksum(lock_name, checksum)
|
240
|
+
end
|
235
241
|
else
|
236
|
-
|
242
|
+
init_checksum(lock_name)
|
237
243
|
end
|
238
244
|
end
|
239
245
|
end
|
@@ -243,7 +249,11 @@ module Bundler
|
|
243
249
|
end
|
244
250
|
|
245
251
|
def store_checksum(lock_name, checksum)
|
246
|
-
(
|
252
|
+
init_checksum(lock_name)[checksum.algo] = checksum
|
253
|
+
end
|
254
|
+
|
255
|
+
def init_checksum(lock_name)
|
256
|
+
@store[lock_name] ||= {}
|
247
257
|
end
|
248
258
|
|
249
259
|
def fetch_checksum(lock_name, algo)
|
data/lib/bundler/cli/doctor.rb
CHANGED
@@ -99,7 +99,7 @@ module Bundler
|
|
99
99
|
end
|
100
100
|
end.sort.each {|m| message += m }
|
101
101
|
raise ProductionError, message
|
102
|
-
elsif
|
102
|
+
elsif permissions_valid
|
103
103
|
Bundler.ui.info "No issues found with the installed bundle"
|
104
104
|
end
|
105
105
|
end
|
@@ -108,21 +108,21 @@ module Bundler
|
|
108
108
|
|
109
109
|
def check_home_permissions
|
110
110
|
require "find"
|
111
|
-
|
112
|
-
|
113
|
-
|
111
|
+
files_not_readable = []
|
112
|
+
files_not_readable_and_owned_by_different_user = []
|
113
|
+
files_not_owned_by_current_user_but_still_readable = []
|
114
114
|
broken_symlinks = []
|
115
115
|
Find.find(Bundler.bundle_path.to_s).each do |f|
|
116
116
|
if !File.exist?(f)
|
117
117
|
broken_symlinks << f
|
118
|
-
elsif !File.
|
118
|
+
elsif !File.readable?(f)
|
119
119
|
if File.stat(f).uid != Process.uid
|
120
|
-
|
120
|
+
files_not_readable_and_owned_by_different_user << f
|
121
121
|
else
|
122
|
-
|
122
|
+
files_not_readable << f
|
123
123
|
end
|
124
124
|
elsif File.stat(f).uid != Process.uid
|
125
|
-
|
125
|
+
files_not_owned_by_current_user_but_still_readable << f
|
126
126
|
end
|
127
127
|
end
|
128
128
|
|
@@ -134,23 +134,23 @@ module Bundler
|
|
134
134
|
ok = false
|
135
135
|
end
|
136
136
|
|
137
|
-
if
|
137
|
+
if files_not_owned_by_current_user_but_still_readable.any?
|
138
138
|
Bundler.ui.warn "Files exist in the Bundler home that are owned by another " \
|
139
|
-
"user, but are still readable
|
139
|
+
"user, but are still readable. These files are:\n - #{files_not_owned_by_current_user_but_still_readable.join("\n - ")}"
|
140
140
|
|
141
141
|
ok = false
|
142
142
|
end
|
143
143
|
|
144
|
-
if
|
144
|
+
if files_not_readable_and_owned_by_different_user.any?
|
145
145
|
Bundler.ui.warn "Files exist in the Bundler home that are owned by another " \
|
146
|
-
"user, and are not readable
|
146
|
+
"user, and are not readable. These files are:\n - #{files_not_readable_and_owned_by_different_user.join("\n - ")}"
|
147
147
|
|
148
148
|
ok = false
|
149
149
|
end
|
150
150
|
|
151
|
-
if
|
151
|
+
if files_not_readable.any?
|
152
152
|
Bundler.ui.warn "Files exist in the Bundler home that are not " \
|
153
|
-
"readable
|
153
|
+
"readable by the current user. These files are:\n - #{files_not_readable.join("\n - ")}"
|
154
154
|
|
155
155
|
ok = false
|
156
156
|
end
|
data/lib/bundler/cli/inject.rb
CHANGED
@@ -35,8 +35,8 @@ module Bundler
|
|
35
35
|
Bundler.ui.confirm(added.map do |d|
|
36
36
|
name = "'#{d.name}'"
|
37
37
|
requirement = ", '#{d.requirement}'"
|
38
|
-
group = ", :
|
39
|
-
source = ", :
|
38
|
+
group = ", group: #{d.groups.inspect}" if d.groups != Array(:default)
|
39
|
+
source = ", source: '#{d.source}'" unless d.source.nil?
|
40
40
|
%(gem #{name}#{requirement}#{group}#{source})
|
41
41
|
end.join("\n"))
|
42
42
|
else
|
data/lib/bundler/cli/lock.rb
CHANGED
@@ -44,7 +44,8 @@ module Bundler
|
|
44
44
|
|
45
45
|
Bundler::CLI::Common.configure_gem_version_promoter(definition, options) if options[:update]
|
46
46
|
|
47
|
-
options["remove-platform"].each do |
|
47
|
+
options["remove-platform"].each do |platform_string|
|
48
|
+
platform = Gem::Platform.new(platform_string)
|
48
49
|
definition.remove_platform(platform)
|
49
50
|
end
|
50
51
|
|
@@ -37,7 +37,8 @@ module Bundler
|
|
37
37
|
file.digests = parse_digests(response)
|
38
38
|
# server may ignore Range and return the full response
|
39
39
|
if response.is_a?(Gem::Net::HTTPPartialContent)
|
40
|
-
|
40
|
+
tail = response.body.byteslice(1..-1)
|
41
|
+
break false unless tail && file.append(tail)
|
41
42
|
else
|
42
43
|
file.write(response.body)
|
43
44
|
end
|