rubygems-update 3.6.5 → 3.6.6
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 +15 -0
- data/bundler/CHANGELOG.md +27 -0
- data/bundler/lib/bundler/build_metadata.rb +2 -2
- data/bundler/lib/bundler/checksum.rb +1 -1
- data/bundler/lib/bundler/cli/doctor.rb +14 -14
- data/bundler/lib/bundler/cli/inject.rb +2 -2
- data/bundler/lib/bundler/cli/lock.rb +2 -1
- data/bundler/lib/bundler/compact_index_client/updater.rb +2 -1
- data/bundler/lib/bundler/definition.rb +58 -47
- data/bundler/lib/bundler/errors.rb +18 -0
- data/bundler/lib/bundler/injector.rb +9 -9
- data/bundler/lib/bundler/man/bundle-add.1 +1 -1
- data/bundler/lib/bundler/man/bundle-binstubs.1 +1 -1
- data/bundler/lib/bundler/man/bundle-cache.1 +1 -1
- data/bundler/lib/bundler/man/bundle-check.1 +1 -1
- data/bundler/lib/bundler/man/bundle-clean.1 +1 -1
- data/bundler/lib/bundler/man/bundle-config.1 +6 -6
- data/bundler/lib/bundler/man/bundle-config.1.ronn +9 -4
- data/bundler/lib/bundler/man/bundle-console.1 +1 -1
- data/bundler/lib/bundler/man/bundle-doctor.1 +1 -1
- data/bundler/lib/bundler/man/bundle-env.1 +1 -1
- data/bundler/lib/bundler/man/bundle-exec.1 +3 -3
- data/bundler/lib/bundler/man/bundle-exec.1.ronn +2 -2
- data/bundler/lib/bundler/man/bundle-fund.1 +1 -1
- data/bundler/lib/bundler/man/bundle-gem.1 +1 -1
- data/bundler/lib/bundler/man/bundle-help.1 +1 -1
- data/bundler/lib/bundler/man/bundle-info.1 +1 -1
- data/bundler/lib/bundler/man/bundle-init.1 +1 -1
- data/bundler/lib/bundler/man/bundle-inject.1 +1 -1
- data/bundler/lib/bundler/man/bundle-install.1 +1 -1
- data/bundler/lib/bundler/man/bundle-issue.1 +1 -1
- data/bundler/lib/bundler/man/bundle-licenses.1 +1 -1
- data/bundler/lib/bundler/man/bundle-list.1 +1 -1
- data/bundler/lib/bundler/man/bundle-lock.1 +1 -1
- data/bundler/lib/bundler/man/bundle-open.1 +1 -1
- data/bundler/lib/bundler/man/bundle-outdated.1 +1 -1
- data/bundler/lib/bundler/man/bundle-platform.1 +1 -1
- data/bundler/lib/bundler/man/bundle-plugin.1 +1 -1
- data/bundler/lib/bundler/man/bundle-pristine.1 +1 -1
- data/bundler/lib/bundler/man/bundle-remove.1 +1 -1
- data/bundler/lib/bundler/man/bundle-show.1 +1 -1
- data/bundler/lib/bundler/man/bundle-update.1 +1 -1
- data/bundler/lib/bundler/man/bundle-version.1 +1 -1
- data/bundler/lib/bundler/man/bundle-viz.1 +1 -1
- data/bundler/lib/bundler/man/bundle.1 +1 -1
- data/bundler/lib/bundler/man/gemfile.5 +1 -1
- data/bundler/lib/bundler/plugin/index.rb +1 -1
- data/bundler/lib/bundler/resolver/candidate.rb +11 -8
- data/bundler/lib/bundler/shared_helpers.rb +4 -0
- data/bundler/lib/bundler/source/git/git_proxy.rb +6 -0
- data/bundler/lib/bundler/source/git.rb +5 -1
- data/bundler/lib/bundler/source/rubygems/remote.rb +11 -3
- data/bundler/lib/bundler/vendor/uri/lib/uri/common.rb +7 -3
- data/bundler/lib/bundler/vendor/uri/lib/uri/generic.rb +12 -11
- data/bundler/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb +6 -6
- data/bundler/lib/bundler/vendor/uri/lib/uri/version.rb +1 -1
- data/bundler/lib/bundler/version.rb +1 -1
- data/lib/rubygems/local_remote_options.rb +2 -2
- data/lib/rubygems/rdoc.rb +8 -4
- data/lib/rubygems/vendor/uri/lib/uri/common.rb +7 -3
- data/lib/rubygems/vendor/uri/lib/uri/generic.rb +12 -11
- data/lib/rubygems/vendor/uri/lib/uri/rfc2396_parser.rb +6 -6
- data/lib/rubygems/vendor/uri/lib/uri/version.rb +1 -1
- data/lib/rubygems.rb +1 -1
- data/rubygems-update.gemspec +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c9521350c1a716eef57fc59c91a1d81ff8f6806cc2cf1c909c75888aa18a486a
|
4
|
+
data.tar.gz: 3f62199690949d037610115ea815ae128996298b663fe4417bb5848e71d7a96d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6500bc219b6e8629740b729e793fbef6c3e7d2745b14562bb09e8d4bb327bb17de8f255e2a9635c48989c409b560a177cfd1062e77af1a07a7f4501426d71005
|
7
|
+
data.tar.gz: 5ec01505dfa015e3f4d0ad051d0755d674baa431ac11f128f8d8fefcfb836ab8817794ca1b6f9aa7ce94b1e4dc6dc8421487cef788485a22016cd5dc144e68e1
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,18 @@
|
|
1
|
+
# 3.6.6 / 2025-03-13
|
2
|
+
|
3
|
+
## Enhancements:
|
4
|
+
|
5
|
+
* Update vendored uri to 1.0.3. Pull request
|
6
|
+
[#8534](https://github.com/rubygems/rubygems/pull/8534) by hsbt
|
7
|
+
* Installs bundler 2.6.6 as a default gem.
|
8
|
+
|
9
|
+
## Bug fixes:
|
10
|
+
|
11
|
+
* Fix `gem rdoc` not working with newer versions of rdoc when not
|
12
|
+
installed as default gems. Pull request
|
13
|
+
[#8549](https://github.com/rubygems/rubygems/pull/8549) by
|
14
|
+
deivid-rodriguez
|
15
|
+
|
1
16
|
# 3.6.5 / 2025-02-20
|
2
17
|
|
3
18
|
## Enhancements:
|
data/bundler/CHANGELOG.md
CHANGED
@@ -1,3 +1,30 @@
|
|
1
|
+
# 2.6.6 (March 13, 2025)
|
2
|
+
|
3
|
+
## Enhancements:
|
4
|
+
|
5
|
+
- Fix `ENAMETOOLONG` error when creating compact index cache [#5578](https://github.com/rubygems/rubygems/pull/5578)
|
6
|
+
- Use shorthand hash syntax for bundle add [#8547](https://github.com/rubygems/rubygems/pull/8547)
|
7
|
+
- Update vendored uri to 1.0.3 [#8534](https://github.com/rubygems/rubygems/pull/8534)
|
8
|
+
- Retry gracefully on blank partial response in compact index [#8524](https://github.com/rubygems/rubygems/pull/8524)
|
9
|
+
- Give a better error when trying to write the lock file on a read-only filesystem [#5920](https://github.com/rubygems/rubygems/pull/5920)
|
10
|
+
- Improve log messages when lockfile platforms are added [#8523](https://github.com/rubygems/rubygems/pull/8523)
|
11
|
+
- Allow noop `bundle install` to work on read-only or protected folders [#8519](https://github.com/rubygems/rubygems/pull/8519)
|
12
|
+
|
13
|
+
## Bug fixes:
|
14
|
+
|
15
|
+
- 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)
|
16
|
+
- Modify `bundle doctor` to not report issue when files aren't writable [#8520](https://github.com/rubygems/rubygems/pull/8520)
|
17
|
+
|
18
|
+
## Performance:
|
19
|
+
|
20
|
+
- Optimize resolution by removing an array allocation from `Candidate#<=>` [#8559](https://github.com/rubygems/rubygems/pull/8559)
|
21
|
+
|
22
|
+
## Documentation:
|
23
|
+
|
24
|
+
- Update docs for with/without consistency [#8555](https://github.com/rubygems/rubygems/pull/8555)
|
25
|
+
- Recommend non-deprecated methods in `bundle exec` documentation [#8537](https://github.com/rubygems/rubygems/pull/8537)
|
26
|
+
- Hint about default group when using `only` configuration option [#8536](https://github.com/rubygems/rubygems/pull/8536)
|
27
|
+
|
1
28
|
# 2.6.5 (February 20, 2025)
|
2
29
|
|
3
30
|
## Enhancements:
|
@@ -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 = "2025-
|
8
|
-
@git_commit_sha = "
|
7
|
+
@built_at = "2025-03-13".freeze
|
8
|
+
@git_commit_sha = "25cf0763954".freeze
|
9
9
|
@release = true
|
10
10
|
# end ivars
|
11
11
|
|
@@ -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
|
@@ -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
|
@@ -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
|
@@ -94,7 +94,7 @@ module Bundler
|
|
94
94
|
|
95
95
|
@locked_ruby_version = nil
|
96
96
|
@new_platforms = []
|
97
|
-
@
|
97
|
+
@removed_platforms = []
|
98
98
|
|
99
99
|
if lockfile_exists?
|
100
100
|
@lockfile_contents = Bundler.read_file(lockfile)
|
@@ -330,7 +330,7 @@ module Bundler
|
|
330
330
|
SpecSet.new(filter_specs(@locked_specs, @dependencies - deleted_deps))
|
331
331
|
else
|
332
332
|
Bundler.ui.debug "Found no changes, using resolution from the lockfile"
|
333
|
-
if @
|
333
|
+
if @removed_platforms.any? || @locked_gems.may_include_redundant_platform_specific_gems?
|
334
334
|
SpecSet.new(filter_specs(@locked_specs, @dependencies))
|
335
335
|
else
|
336
336
|
@locked_specs
|
@@ -412,41 +412,8 @@ module Bundler
|
|
412
412
|
|
413
413
|
raise ProductionError, "Frozen mode is set, but there's no lockfile" unless lockfile_exists?
|
414
414
|
|
415
|
-
|
416
|
-
|
417
|
-
changed = []
|
418
|
-
|
419
|
-
new_platforms = @platforms - @locked_platforms
|
420
|
-
deleted_platforms = @locked_platforms - @platforms
|
421
|
-
added.concat new_platforms.map {|p| "* platform: #{p}" }
|
422
|
-
deleted.concat deleted_platforms.map {|p| "* platform: #{p}" }
|
423
|
-
|
424
|
-
added.concat new_deps.map {|d| "* #{pretty_dep(d)}" } if new_deps.any?
|
425
|
-
deleted.concat deleted_deps.map {|d| "* #{pretty_dep(d)}" } if deleted_deps.any?
|
426
|
-
|
427
|
-
both_sources = Hash.new {|h, k| h[k] = [] }
|
428
|
-
current_dependencies.each {|d| both_sources[d.name][0] = d }
|
429
|
-
current_locked_dependencies.each {|d| both_sources[d.name][1] = d }
|
430
|
-
|
431
|
-
both_sources.each do |name, (dep, lock_dep)|
|
432
|
-
next if dep.nil? || lock_dep.nil?
|
433
|
-
|
434
|
-
gemfile_source = dep.source || default_source
|
435
|
-
lock_source = lock_dep.source || default_source
|
436
|
-
next if lock_source.include?(gemfile_source)
|
437
|
-
|
438
|
-
gemfile_source_name = dep.source ? gemfile_source.to_gemfile : "no specified source"
|
439
|
-
lockfile_source_name = lock_dep.source ? lock_source.to_gemfile : "no specified source"
|
440
|
-
changed << "* #{name} from `#{lockfile_source_name}` to `#{gemfile_source_name}`"
|
441
|
-
end
|
442
|
-
|
443
|
-
reason = resolve_needed? ? change_reason : "some dependencies were deleted from your gemfile"
|
444
|
-
msg = String.new
|
445
|
-
msg << "#{reason.capitalize.strip}, but the lockfile can't be updated because frozen mode is set"
|
446
|
-
msg << "\n\nYou have added to the Gemfile:\n" << added.join("\n") if added.any?
|
447
|
-
msg << "\n\nYou have deleted from the Gemfile:\n" << deleted.join("\n") if deleted.any?
|
448
|
-
msg << "\n\nYou have changed in the Gemfile:\n" << changed.join("\n") if changed.any?
|
449
|
-
msg << "\n\nRun `bundle install` elsewhere and add the updated #{SharedHelpers.relative_gemfile_path} to version control.\n" unless unlocking?
|
415
|
+
msg = lockfile_changes_summary("frozen mode is set")
|
416
|
+
return unless msg
|
450
417
|
|
451
418
|
unless explicit_flag
|
452
419
|
suggested_command = unless Bundler.settings.locations("frozen").keys.include?(:env)
|
@@ -456,7 +423,7 @@ module Bundler
|
|
456
423
|
"freeze by running `#{suggested_command}`." if suggested_command
|
457
424
|
end
|
458
425
|
|
459
|
-
raise ProductionError, msg
|
426
|
+
raise ProductionError, msg
|
460
427
|
end
|
461
428
|
|
462
429
|
def validate_runtime!
|
@@ -511,10 +478,10 @@ module Bundler
|
|
511
478
|
end
|
512
479
|
|
513
480
|
def remove_platform(platform)
|
514
|
-
|
515
|
-
|
516
|
-
|
517
|
-
|
481
|
+
raise InvalidOption, "Unable to remove the platform `#{platform}` since the only platforms are #{@platforms.join ", "}" unless @platforms.include?(platform)
|
482
|
+
|
483
|
+
@removed_platforms << platform
|
484
|
+
@platforms.delete(platform)
|
518
485
|
end
|
519
486
|
|
520
487
|
def nothing_changed?
|
@@ -541,6 +508,46 @@ module Bundler
|
|
541
508
|
|
542
509
|
private
|
543
510
|
|
511
|
+
def lockfile_changes_summary(update_refused_reason)
|
512
|
+
added = []
|
513
|
+
deleted = []
|
514
|
+
changed = []
|
515
|
+
|
516
|
+
added.concat @new_platforms.map {|p| "* platform: #{p}" }
|
517
|
+
deleted.concat @removed_platforms.map {|p| "* platform: #{p}" }
|
518
|
+
|
519
|
+
added.concat new_deps.map {|d| "* #{pretty_dep(d)}" } if new_deps.any?
|
520
|
+
deleted.concat deleted_deps.map {|d| "* #{pretty_dep(d)}" } if deleted_deps.any?
|
521
|
+
|
522
|
+
both_sources = Hash.new {|h, k| h[k] = [] }
|
523
|
+
current_dependencies.each {|d| both_sources[d.name][0] = d }
|
524
|
+
current_locked_dependencies.each {|d| both_sources[d.name][1] = d }
|
525
|
+
|
526
|
+
both_sources.each do |name, (dep, lock_dep)|
|
527
|
+
next if dep.nil? || lock_dep.nil?
|
528
|
+
|
529
|
+
gemfile_source = dep.source || default_source
|
530
|
+
lock_source = lock_dep.source || default_source
|
531
|
+
next if lock_source.include?(gemfile_source)
|
532
|
+
|
533
|
+
gemfile_source_name = dep.source ? gemfile_source.to_gemfile : "no specified source"
|
534
|
+
lockfile_source_name = lock_dep.source ? lock_source.to_gemfile : "no specified source"
|
535
|
+
changed << "* #{name} from `#{lockfile_source_name}` to `#{gemfile_source_name}`"
|
536
|
+
end
|
537
|
+
|
538
|
+
return unless added.any? || deleted.any? || changed.any? || resolve_needed?
|
539
|
+
|
540
|
+
reason = resolve_needed? ? change_reason : "some dependencies were deleted from your gemfile"
|
541
|
+
|
542
|
+
msg = String.new
|
543
|
+
msg << "#{reason.capitalize.strip}, but the lockfile can't be updated because #{update_refused_reason}"
|
544
|
+
msg << "\n\nYou have added to the Gemfile:\n" << added.join("\n") if added.any?
|
545
|
+
msg << "\n\nYou have deleted from the Gemfile:\n" << deleted.join("\n") if deleted.any?
|
546
|
+
msg << "\n\nYou have changed in the Gemfile:\n" << changed.join("\n") if changed.any?
|
547
|
+
msg << "\n\nRun `bundle install` elsewhere and add the updated #{SharedHelpers.relative_gemfile_path} to version control.\n" unless unlocking?
|
548
|
+
msg
|
549
|
+
end
|
550
|
+
|
544
551
|
def install_needed?
|
545
552
|
resolve_needed? || missing_specs?
|
546
553
|
end
|
@@ -601,8 +608,12 @@ module Bundler
|
|
601
608
|
return
|
602
609
|
end
|
603
610
|
|
604
|
-
|
605
|
-
|
611
|
+
begin
|
612
|
+
SharedHelpers.filesystem_access(file) do |p|
|
613
|
+
File.open(p, "wb") {|f| f.puts(contents) }
|
614
|
+
end
|
615
|
+
rescue ReadOnlyFileSystemError
|
616
|
+
raise ProductionError, lockfile_changes_summary("file system is read-only")
|
606
617
|
end
|
607
618
|
end
|
608
619
|
|
@@ -625,7 +636,8 @@ module Bundler
|
|
625
636
|
@resolution_packages ||= begin
|
626
637
|
last_resolve = converge_locked_specs
|
627
638
|
remove_invalid_platforms!
|
628
|
-
|
639
|
+
new_resolution_platforms = @current_platform_missing ? @new_platforms + [local_platform] : @new_platforms
|
640
|
+
packages = Resolver::Base.new(source_requirements, expanded_dependencies, last_resolve, @platforms, locked_specs: @originally_locked_specs, unlock: @unlocking_all || @gems_to_unlock, prerelease: gem_version_promoter.pre?, prefer_local: @prefer_local, new_platforms: new_resolution_platforms)
|
629
641
|
packages = additional_base_requirements_to_prevent_downgrades(packages)
|
630
642
|
packages = additional_base_requirements_to_force_updates(packages)
|
631
643
|
packages
|
@@ -768,7 +780,6 @@ module Bundler
|
|
768
780
|
@most_specific_non_local_locked_platform = find_most_specific_locked_platform
|
769
781
|
return if @most_specific_non_local_locked_platform
|
770
782
|
|
771
|
-
@new_platforms << local_platform
|
772
783
|
@platforms << local_platform
|
773
784
|
true
|
774
785
|
end
|
@@ -799,7 +810,7 @@ module Bundler
|
|
799
810
|
[@source_changes, "the list of sources changed"],
|
800
811
|
[@dependency_changes, "the dependencies in your gemfile changed"],
|
801
812
|
[@current_platform_missing, "your lockfile does not include the current platform"],
|
802
|
-
[@new_platforms.any?, "you
|
813
|
+
[@new_platforms.any?, "you are adding a new platform to your lockfile"],
|
803
814
|
[@path_changes, "the gemspecs for path gems changed"],
|
804
815
|
[@local_changes, "the gemspecs for git local gems changed"],
|
805
816
|
[@missing_lockfile_dep, "your lock file is missing \"#{@missing_lockfile_dep}\""],
|
@@ -193,6 +193,24 @@ module Bundler
|
|
193
193
|
status_code(31)
|
194
194
|
end
|
195
195
|
|
196
|
+
class ReadOnlyFileSystemError < PermissionError
|
197
|
+
def message
|
198
|
+
"There was an error while trying to #{action} `#{@path}`. " \
|
199
|
+
"File system is read-only."
|
200
|
+
end
|
201
|
+
|
202
|
+
status_code(42)
|
203
|
+
end
|
204
|
+
|
205
|
+
class OperationNotPermittedError < PermissionError
|
206
|
+
def message
|
207
|
+
"There was an error while trying to #{action} `#{@path}`. " \
|
208
|
+
"Underlying OS system call raised an EPERM error."
|
209
|
+
end
|
210
|
+
|
211
|
+
status_code(43)
|
212
|
+
end
|
213
|
+
|
196
214
|
class GenericSystemCallError < BundlerError
|
197
215
|
attr_reader :underlying_error
|
198
216
|
|
@@ -108,17 +108,17 @@ module Bundler
|
|
108
108
|
end
|
109
109
|
|
110
110
|
if d.groups != Array(:default)
|
111
|
-
group = d.groups.size == 1 ? ", :
|
111
|
+
group = d.groups.size == 1 ? ", group: #{d.groups.first.inspect}" : ", groups: #{d.groups.inspect}"
|
112
112
|
end
|
113
113
|
|
114
|
-
source = ", :
|
115
|
-
path = ", :
|
116
|
-
git = ", :
|
117
|
-
github = ", :
|
118
|
-
branch = ", :
|
119
|
-
ref = ", :
|
120
|
-
glob = ", :
|
121
|
-
require_path = ", :
|
114
|
+
source = ", source: \"#{d.source}\"" unless d.source.nil?
|
115
|
+
path = ", path: \"#{d.path}\"" unless d.path.nil?
|
116
|
+
git = ", git: \"#{d.git}\"" unless d.git.nil?
|
117
|
+
github = ", github: \"#{d.github}\"" unless d.github.nil?
|
118
|
+
branch = ", branch: \"#{d.branch}\"" unless d.branch.nil?
|
119
|
+
ref = ", ref: \"#{d.ref}\"" unless d.ref.nil?
|
120
|
+
glob = ", glob: \"#{d.glob}\"" unless d.glob.nil?
|
121
|
+
require_path = ", require: #{convert_autorequire(d.autorequire)}" unless d.autorequire.nil?
|
122
122
|
|
123
123
|
%(gem #{name}#{requirement}#{group}#{source}#{path}#{git}#{github}#{branch}#{ref}#{glob}#{require_path})
|
124
124
|
end.join("\n")
|
@@ -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\-BINSTUBS" "1" "
|
3
|
+
.TH "BUNDLE\-BINSTUBS" "1" "March 2025" ""
|
4
4
|
.SH "NAME"
|
5
5
|
\fBbundle\-binstubs\fR \- Install the binstubs of the listed gems
|
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\-CACHE" "1" "
|
3
|
+
.TH "BUNDLE\-CACHE" "1" "March 2025" ""
|
4
4
|
.SH "NAME"
|
5
5
|
\fBbundle\-cache\fR \- Package your needed \fB\.gem\fR files into your application
|
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\-CHECK" "1" "
|
3
|
+
.TH "BUNDLE\-CHECK" "1" "March 2025" ""
|
4
4
|
.SH "NAME"
|
5
5
|
\fBbundle\-check\fR \- Verifies if dependencies are satisfied by installed gems
|
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\-CLEAN" "1" "
|
3
|
+
.TH "BUNDLE\-CLEAN" "1" "March 2025" ""
|
4
4
|
.SH "NAME"
|
5
5
|
\fBbundle\-clean\fR \- Cleans up unused gems in your bundler directory
|
6
6
|
.SH "SYNOPSIS"
|
@@ -1,6 +1,6 @@
|
|
1
1
|
.\" generated with Ronn-NG/v0.10.1
|
2
2
|
.\" http://github.com/apjanke/ronn-ng/tree/0.10.1
|
3
|
-
.TH "BUNDLE\-CONFIG" "1" "
|
3
|
+
.TH "BUNDLE\-CONFIG" "1" "March 2025" ""
|
4
4
|
.SH "NAME"
|
5
5
|
\fBbundle\-config\fR \- Set bundler configuration options
|
6
6
|
.SH "SYNOPSIS"
|
@@ -56,16 +56,16 @@ Creates a directory (defaults to \fB~/bin\fR) and place any executables from the
|
|
56
56
|
In deployment mode, Bundler will 'roll\-out' the bundle for \fBproduction\fR use\. Please check carefully if you want to have this option enabled in \fBdevelopment\fR or \fBtest\fR environments\.
|
57
57
|
.TP
|
58
58
|
\fBonly\fR
|
59
|
-
A space\-separated list of groups to install only gems of the specified groups\.
|
59
|
+
A space\-separated list of groups to install only gems of the specified groups\. Please check carefully if you want to install also gems without a group, cause they get put inside \fBdefault\fR group\. For example \fBonly test:default\fR will install all gems specified in test group and without one\.
|
60
60
|
.TP
|
61
61
|
\fBpath\fR
|
62
62
|
The location to install the specified gems to\. This defaults to Rubygems' setting\. Bundler shares this location with Rubygems, \fBgem install \|\.\|\.\|\.\fR will have gem installed there, too\. Therefore, gems installed without a \fB\-\-path \|\.\|\.\|\.\fR setting will show up by calling \fBgem list\fR\. Accordingly, gems installed to other locations will not get listed\.
|
63
63
|
.TP
|
64
64
|
\fBwithout\fR
|
65
|
-
A space\-separated list of groups referencing gems to skip during installation\.
|
65
|
+
A space\-separated or \fB:\fR\-separated list of groups referencing gems to skip during installation\.
|
66
66
|
.TP
|
67
67
|
\fBwith\fR
|
68
|
-
A space\-separated list of \fBoptional\fR groups referencing gems to include during installation\.
|
68
|
+
A space\-separated or \fB:\fR\-separated list of \fBoptional\fR groups referencing gems to include during installation\.
|
69
69
|
.SH "BUILD OPTIONS"
|
70
70
|
You can use \fBbundle config\fR to give Bundler the flags to pass to the gem installer every time bundler tries to install a particular gem\.
|
71
71
|
.P
|
@@ -197,9 +197,9 @@ The following is a list of all configuration keys and their purpose\. You can le
|
|
197
197
|
.IP "\(bu" 4
|
198
198
|
\fBversion\fR (\fBBUNDLE_VERSION\fR): The version of Bundler to use when running under Bundler environment\. Defaults to \fBlockfile\fR\. You can also specify \fBsystem\fR or \fBx\.y\.z\fR\. \fBlockfile\fR will use the Bundler version specified in the \fBGemfile\.lock\fR, \fBsystem\fR will use the system version of Bundler, and \fBx\.y\.z\fR will use the specified version of Bundler\.
|
199
199
|
.IP "\(bu" 4
|
200
|
-
\fBwith\fR (\fBBUNDLE_WITH\fR): A \fB:\fR\-separated list of groups whose gems bundler should install\.
|
200
|
+
\fBwith\fR (\fBBUNDLE_WITH\fR): A space\-separated or \fB:\fR\-separated list of groups whose gems bundler should install\.
|
201
201
|
.IP "\(bu" 4
|
202
|
-
\fBwithout\fR (\fBBUNDLE_WITHOUT\fR): A \fB:\fR\-separated list of groups whose gems bundler should not install\.
|
202
|
+
\fBwithout\fR (\fBBUNDLE_WITHOUT\fR): A space\-separated or \fB:\fR\-separated list of groups whose gems bundler should not install\.
|
203
203
|
.IP "" 0
|
204
204
|
.SH "LOCAL GIT REPOS"
|
205
205
|
Bundler also allows you to work against a git repository locally instead of using the remote version\. This can be achieved by setting up a local override:
|
@@ -79,6 +79,9 @@ The options that can be configured are:
|
|
79
79
|
|
80
80
|
* `only`:
|
81
81
|
A space-separated list of groups to install only gems of the specified groups.
|
82
|
+
Please check carefully if you want to install also gems without a group, cause
|
83
|
+
they get put inside `default` group. For example `only test:default` will install
|
84
|
+
all gems specified in test group and without one.
|
82
85
|
|
83
86
|
* `path`:
|
84
87
|
The location to install the specified gems to. This defaults to Rubygems'
|
@@ -88,10 +91,12 @@ The options that can be configured are:
|
|
88
91
|
installed to other locations will not get listed.
|
89
92
|
|
90
93
|
* `without`:
|
91
|
-
A space-separated list of groups referencing gems to skip during
|
94
|
+
A space-separated or `:`-separated list of groups referencing gems to skip during
|
95
|
+
installation.
|
92
96
|
|
93
97
|
* `with`:
|
94
|
-
|
98
|
+
A space-separated or `:`-separated list of **optional** groups referencing gems to
|
99
|
+
include during installation.
|
95
100
|
|
96
101
|
## BUILD OPTIONS
|
97
102
|
|
@@ -280,9 +285,9 @@ learn more about their operation in [bundle install(1)](bundle-install.1.html).
|
|
280
285
|
`system` will use the system version of Bundler, and `x.y.z` will use
|
281
286
|
the specified version of Bundler.
|
282
287
|
* `with` (`BUNDLE_WITH`):
|
283
|
-
A `:`-separated list of groups whose gems bundler should install.
|
288
|
+
A space-separated or `:`-separated list of groups whose gems bundler should install.
|
284
289
|
* `without` (`BUNDLE_WITHOUT`):
|
285
|
-
A `:`-separated list of groups whose gems bundler should not install.
|
290
|
+
A space-separated or `:`-separated list of groups whose gems bundler should not install.
|
286
291
|
|
287
292
|
## LOCAL GIT REPOS
|
288
293
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
.\" generated with Ronn-NG/v0.10.1
|
2
2
|
.\" http://github.com/apjanke/ronn-ng/tree/0.10.1
|
3
|
-
.TH "BUNDLE\-CONSOLE" "1" "
|
3
|
+
.TH "BUNDLE\-CONSOLE" "1" "March 2025" ""
|
4
4
|
.SH "NAME"
|
5
5
|
\fBbundle\-console\fR \- Open an IRB session with the bundle pre\-loaded
|
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\-DOCTOR" "1" "
|
3
|
+
.TH "BUNDLE\-DOCTOR" "1" "March 2025" ""
|
4
4
|
.SH "NAME"
|
5
5
|
\fBbundle\-doctor\fR \- Checks the bundle for common problems
|
6
6
|
.SH "SYNOPSIS"
|
@@ -1,6 +1,6 @@
|
|
1
1
|
.\" generated with Ronn-NG/v0.10.1
|
2
2
|
.\" http://github.com/apjanke/ronn-ng/tree/0.10.1
|
3
|
-
.TH "BUNDLE\-ENV" "1" "
|
3
|
+
.TH "BUNDLE\-ENV" "1" "March 2025" ""
|
4
4
|
.SH "NAME"
|
5
5
|
\fBbundle\-env\fR \- Print information about the environment Bundler is running under
|
6
6
|
.SH "SYNOPSIS"
|
@@ -1,6 +1,6 @@
|
|
1
1
|
.\" generated with Ronn-NG/v0.10.1
|
2
2
|
.\" http://github.com/apjanke/ronn-ng/tree/0.10.1
|
3
|
-
.TH "BUNDLE\-EXEC" "1" "
|
3
|
+
.TH "BUNDLE\-EXEC" "1" "March 2025" ""
|
4
4
|
.SH "NAME"
|
5
5
|
\fBbundle\-exec\fR \- Execute a command in the context of the bundle
|
6
6
|
.SH "SYNOPSIS"
|
@@ -74,8 +74,8 @@ end
|
|
74
74
|
Bundler provides convenience helpers that wrap \fBsystem\fR and \fBexec\fR, and they can be used like this:
|
75
75
|
.IP "" 4
|
76
76
|
.nf
|
77
|
-
Bundler\.
|
78
|
-
Bundler\.
|
77
|
+
Bundler\.unbundled_system('brew install wget')
|
78
|
+
Bundler\.unbundled_exec('brew install wget')
|
79
79
|
.fi
|
80
80
|
.IP "" 0
|
81
81
|
.SH "RUBYGEMS PLUGINS"
|
@@ -108,8 +108,8 @@ need to use `with_unbundled_env`.
|
|
108
108
|
Bundler provides convenience helpers that wrap `system` and `exec`, and they
|
109
109
|
can be used like this:
|
110
110
|
|
111
|
-
Bundler.
|
112
|
-
Bundler.
|
111
|
+
Bundler.unbundled_system('brew install wget')
|
112
|
+
Bundler.unbundled_exec('brew install wget')
|
113
113
|
|
114
114
|
|
115
115
|
## RUBYGEMS PLUGINS
|
@@ -1,6 +1,6 @@
|
|
1
1
|
.\" generated with Ronn-NG/v0.10.1
|
2
2
|
.\" http://github.com/apjanke/ronn-ng/tree/0.10.1
|
3
|
-
.TH "BUNDLE\-FUND" "1" "
|
3
|
+
.TH "BUNDLE\-FUND" "1" "March 2025" ""
|
4
4
|
.SH "NAME"
|
5
5
|
\fBbundle\-fund\fR \- Lists information about gems seeking funding assistance
|
6
6
|
.SH "SYNOPSIS"
|
@@ -1,6 +1,6 @@
|
|
1
1
|
.\" generated with Ronn-NG/v0.10.1
|
2
2
|
.\" http://github.com/apjanke/ronn-ng/tree/0.10.1
|
3
|
-
.TH "BUNDLE\-GEM" "1" "
|
3
|
+
.TH "BUNDLE\-GEM" "1" "March 2025" ""
|
4
4
|
.SH "NAME"
|
5
5
|
\fBbundle\-gem\fR \- Generate a project skeleton for creating a rubygem
|
6
6
|
.SH "SYNOPSIS"
|
@@ -1,6 +1,6 @@
|
|
1
1
|
.\" generated with Ronn-NG/v0.10.1
|
2
2
|
.\" http://github.com/apjanke/ronn-ng/tree/0.10.1
|
3
|
-
.TH "BUNDLE\-INFO" "1" "
|
3
|
+
.TH "BUNDLE\-INFO" "1" "March 2025" ""
|
4
4
|
.SH "NAME"
|
5
5
|
\fBbundle\-info\fR \- Show information for the given gem in your bundle
|
6
6
|
.SH "SYNOPSIS"
|