bundler 2.5.18 → 2.5.19
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 +28 -0
- data/lib/bundler/build_metadata.rb +2 -2
- data/lib/bundler/cli/add.rb +1 -1
- data/lib/bundler/cli/gem.rb +4 -1
- data/lib/bundler/cli/lock.rb +5 -5
- data/lib/bundler/cli/outdated.rb +1 -1
- data/lib/bundler/definition.rb +3 -7
- data/lib/bundler/dsl.rb +27 -17
- data/lib/bundler/errors.rb +7 -5
- data/lib/bundler/fetcher.rb +2 -2
- data/lib/bundler/inline.rb +19 -4
- data/lib/bundler/installer/gem_installer.rb +4 -2
- data/lib/bundler/installer/parallel_installer.rb +3 -2
- data/lib/bundler/installer.rb +9 -11
- data/lib/bundler/man/bundle-add.1 +27 -16
- data/lib/bundler/man/bundle-add.1.ronn +37 -14
- 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 +1 -1
- data/lib/bundler/man/bundle-console.1 +1 -1
- data/lib/bundler/man/bundle-doctor.1 +1 -1
- data/lib/bundler/man/bundle-exec.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-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 +3 -1
- data/lib/bundler/man/gemfile.5.ronn +6 -0
- data/lib/bundler/retry.rb +1 -1
- data/lib/bundler/ruby_version.rb +7 -1
- data/lib/bundler/rubygems_ext.rb +43 -16
- data/lib/bundler/rubygems_gem_installer.rb +4 -3
- data/lib/bundler/source/git.rb +9 -5
- data/lib/bundler/source/rubygems.rb +5 -12
- data/lib/bundler/ui/shell.rb +24 -2
- data/lib/bundler/ui/silent.rb +12 -1
- data/lib/bundler/vendor/securerandom/.document +1 -0
- data/lib/bundler/vendor/securerandom/LICENSE.txt +22 -0
- data/lib/bundler/vendor/securerandom/lib/random/formatter.rb +373 -0
- data/lib/bundler/vendor/securerandom/lib/securerandom.rb +96 -0
- data/lib/bundler/vendored_securerandom.rb +14 -0
- data/lib/bundler/version.rb +1 -1
- data/lib/bundler.rb +1 -1
- metadata +8 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: cf59bff2285c5f99b1db1fbb57d3c372624ccc17fd68d8267d00d95739edbfda
|
|
4
|
+
data.tar.gz: 5bd1a4207b31f2437da59356cdae6f2c2999842af730d866ec8799f6b6c8f589
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: e6d98b6893658ee4fca7b7bc633d73e48d88c736c55eb6bf807f9d37c1fce3975d965aa08d5b9b03f5b1b8ce1a84028b78a6510620c8936e7bcd86655ed983da
|
|
7
|
+
data.tar.gz: f1edc568d88a5f2dcc82f5c6d74fe418e3ee186ef592b56df315b1678a0f60788bebd1c10f2bc2c463d85c5a050d0a959c956bacf8fffa62c55e73f9b8ee789c
|
data/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,31 @@
|
|
|
1
|
+
# 2.5.19 (September 18, 2024)
|
|
2
|
+
|
|
3
|
+
## Enhancements:
|
|
4
|
+
|
|
5
|
+
- Raise original errors when unexpected errors happen during Gemfile evaluation [#8003](https://github.com/rubygems/rubygems/pull/8003)
|
|
6
|
+
- Make an exe file executable when generating new gems [#8020](https://github.com/rubygems/rubygems/pull/8020)
|
|
7
|
+
- Gracefully handle gem activation conflicts in inline mode [#5535](https://github.com/rubygems/rubygems/pull/5535)
|
|
8
|
+
- Don't include hook templates in cached git source [#8013](https://github.com/rubygems/rubygems/pull/8013)
|
|
9
|
+
- Fix some errors about a previous installation folder that's unsafe to remove, when there's no need to remove it [#7985](https://github.com/rubygems/rubygems/pull/7985)
|
|
10
|
+
- Emit progress to stderr during `bundle outdated --parseable` [#7966](https://github.com/rubygems/rubygems/pull/7966)
|
|
11
|
+
- Reject unknown platforms when running `bundle lock --add-platform` [#7967](https://github.com/rubygems/rubygems/pull/7967)
|
|
12
|
+
- Emit progress to stderr when `--print` is passed to `bundle lock` [#7957](https://github.com/rubygems/rubygems/pull/7957)
|
|
13
|
+
|
|
14
|
+
## Bug fixes:
|
|
15
|
+
|
|
16
|
+
- Fix `bundle install --local` hitting the network when default gems are included [#8027](https://github.com/rubygems/rubygems/pull/8027)
|
|
17
|
+
- Remove temporary `.lock` files unintentionally left around by gem installer [#8022](https://github.com/rubygems/rubygems/pull/8022)
|
|
18
|
+
- Fix `bundle exec rake install` failing when local gem has extensions [#7977](https://github.com/rubygems/rubygems/pull/7977)
|
|
19
|
+
- Load gemspecs in the context of its parent also when using local overrides [#7993](https://github.com/rubygems/rubygems/pull/7993)
|
|
20
|
+
- Fix `bundler/inline` failing in Ruby 3.2 due to conflicting `securerandom` versions [#7984](https://github.com/rubygems/rubygems/pull/7984)
|
|
21
|
+
- Don't blow up when explicit version is removed from some git sources [#7973](https://github.com/rubygems/rubygems/pull/7973)
|
|
22
|
+
- Fix `gem exec rails new project` failing on Ruby 3.2 [#7960](https://github.com/rubygems/rubygems/pull/7960)
|
|
23
|
+
|
|
24
|
+
## Documentation:
|
|
25
|
+
|
|
26
|
+
- Improve `bundle add` man page [#5903](https://github.com/rubygems/rubygems/pull/5903)
|
|
27
|
+
- Add some documentation about backwards compatibility [#7964](https://github.com/rubygems/rubygems/pull/7964)
|
|
28
|
+
|
|
1
29
|
# 2.5.18 (August 26, 2024)
|
|
2
30
|
|
|
3
31
|
## 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 = "2024-
|
|
8
|
-
@git_commit_sha = "
|
|
7
|
+
@built_at = "2024-09-18".freeze
|
|
8
|
+
@git_commit_sha = "d569990361".freeze
|
|
9
9
|
@release = true
|
|
10
10
|
# end ivars
|
|
11
11
|
|
data/lib/bundler/cli/add.rb
CHANGED
|
@@ -34,7 +34,7 @@ module Bundler
|
|
|
34
34
|
end
|
|
35
35
|
|
|
36
36
|
def validate_options!
|
|
37
|
-
raise InvalidOption, "You
|
|
37
|
+
raise InvalidOption, "You cannot specify `--strict` and `--optimistic` at the same time." if options[:strict] && options[:optimistic]
|
|
38
38
|
|
|
39
39
|
# raise error when no gems are specified
|
|
40
40
|
raise InvalidOption, "Please specify gems to add." if gems.empty?
|
data/lib/bundler/cli/gem.rb
CHANGED
|
@@ -191,7 +191,10 @@ module Bundler
|
|
|
191
191
|
templates.merge!("standard.yml.tt" => ".standard.yml")
|
|
192
192
|
end
|
|
193
193
|
|
|
194
|
-
|
|
194
|
+
if config[:exe]
|
|
195
|
+
templates.merge!("exe/newgem.tt" => "exe/#{name}")
|
|
196
|
+
executables.push("exe/#{name}")
|
|
197
|
+
end
|
|
195
198
|
|
|
196
199
|
if extension == "c"
|
|
197
200
|
templates.merge!(
|
data/lib/bundler/cli/lock.rb
CHANGED
|
@@ -15,8 +15,8 @@ module Bundler
|
|
|
15
15
|
end
|
|
16
16
|
|
|
17
17
|
print = options[:print]
|
|
18
|
-
|
|
19
|
-
Bundler.ui.
|
|
18
|
+
previous_output_stream = Bundler.ui.output_stream
|
|
19
|
+
Bundler.ui.output_stream = :stderr if print
|
|
20
20
|
|
|
21
21
|
Bundler::Fetcher.disable_endpoint = options["full-index"]
|
|
22
22
|
|
|
@@ -48,8 +48,8 @@ module Bundler
|
|
|
48
48
|
options["add-platform"].each do |platform_string|
|
|
49
49
|
platform = Gem::Platform.new(platform_string)
|
|
50
50
|
if platform.to_s == "unknown"
|
|
51
|
-
Bundler.ui.
|
|
52
|
-
|
|
51
|
+
Bundler.ui.error "The platform `#{platform_string}` is unknown to RubyGems and can't be added to the lockfile."
|
|
52
|
+
exit 1
|
|
53
53
|
end
|
|
54
54
|
definition.add_platform(platform)
|
|
55
55
|
end
|
|
@@ -68,7 +68,7 @@ module Bundler
|
|
|
68
68
|
end
|
|
69
69
|
end
|
|
70
70
|
|
|
71
|
-
Bundler.ui.
|
|
71
|
+
Bundler.ui.output_stream = previous_output_stream
|
|
72
72
|
end
|
|
73
73
|
end
|
|
74
74
|
end
|
data/lib/bundler/cli/outdated.rb
CHANGED
data/lib/bundler/definition.rb
CHANGED
|
@@ -511,15 +511,11 @@ module Bundler
|
|
|
511
511
|
end
|
|
512
512
|
|
|
513
513
|
def lockfile_exists?
|
|
514
|
-
|
|
515
|
-
end
|
|
516
|
-
|
|
517
|
-
def file_exists?(file)
|
|
518
|
-
file && File.exist?(file)
|
|
514
|
+
lockfile && File.exist?(lockfile)
|
|
519
515
|
end
|
|
520
516
|
|
|
521
517
|
def write_lock(file, preserve_unknown_sections)
|
|
522
|
-
return if Definition.no_lock
|
|
518
|
+
return if Definition.no_lock || file.nil?
|
|
523
519
|
|
|
524
520
|
contents = to_lock
|
|
525
521
|
|
|
@@ -536,7 +532,7 @@ module Bundler
|
|
|
536
532
|
|
|
537
533
|
preserve_unknown_sections ||= !updating_major && (Bundler.frozen_bundle? || !(unlocking? || @unlocking_bundler))
|
|
538
534
|
|
|
539
|
-
if
|
|
535
|
+
if File.exist?(file) && lockfiles_equal?(@lockfile_contents, contents, preserve_unknown_sections)
|
|
540
536
|
return if Bundler.frozen_bundle?
|
|
541
537
|
SharedHelpers.filesystem_access(file) { FileUtils.touch(file) }
|
|
542
538
|
return
|
data/lib/bundler/dsl.rb
CHANGED
|
@@ -42,20 +42,20 @@ module Bundler
|
|
|
42
42
|
end
|
|
43
43
|
|
|
44
44
|
def eval_gemfile(gemfile, contents = nil)
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
45
|
+
with_gemfile(gemfile) do |current_gemfile|
|
|
46
|
+
contents ||= Bundler.read_file(current_gemfile)
|
|
47
|
+
instance_eval(contents, current_gemfile, 1)
|
|
48
|
+
rescue GemfileEvalError => e
|
|
49
|
+
message = "There was an error evaluating `#{File.basename current_gemfile}`: #{e.message}"
|
|
50
|
+
raise DSLError.new(message, current_gemfile, e.backtrace, contents)
|
|
51
|
+
rescue GemfileError, InvalidArgumentError, InvalidOption, DeprecatedError, ScriptError => e
|
|
52
|
+
message = "There was an error parsing `#{File.basename current_gemfile}`: #{e.message}"
|
|
53
|
+
raise DSLError.new(message, current_gemfile, e.backtrace, contents)
|
|
54
|
+
rescue StandardError => e
|
|
55
|
+
raise unless e.backtrace_locations.first.path == current_gemfile
|
|
56
|
+
message = "There was an error parsing `#{File.basename current_gemfile}`: #{e.message}"
|
|
57
|
+
raise DSLError.new(message, current_gemfile, e.backtrace, contents)
|
|
58
|
+
end
|
|
59
59
|
end
|
|
60
60
|
|
|
61
61
|
def gemspec(opts = nil)
|
|
@@ -219,7 +219,7 @@ module Bundler
|
|
|
219
219
|
end
|
|
220
220
|
|
|
221
221
|
def github(repo, options = {})
|
|
222
|
-
raise
|
|
222
|
+
raise InvalidArgumentError, "GitHub sources require a block" unless block_given?
|
|
223
223
|
github_uri = @git_sources["github"].call(repo)
|
|
224
224
|
git_options = normalize_hash(options).merge("uri" => github_uri)
|
|
225
225
|
git_source = @sources.add_git_source(git_options)
|
|
@@ -285,6 +285,16 @@ module Bundler
|
|
|
285
285
|
|
|
286
286
|
private
|
|
287
287
|
|
|
288
|
+
def with_gemfile(gemfile)
|
|
289
|
+
expanded_gemfile_path = Pathname.new(gemfile).expand_path(@gemfile&.parent)
|
|
290
|
+
original_gemfile = @gemfile
|
|
291
|
+
@gemfile = expanded_gemfile_path
|
|
292
|
+
@gemfiles << expanded_gemfile_path
|
|
293
|
+
yield @gemfile.to_s
|
|
294
|
+
ensure
|
|
295
|
+
@gemfile = original_gemfile
|
|
296
|
+
end
|
|
297
|
+
|
|
288
298
|
def add_git_sources
|
|
289
299
|
git_source(:github) do |repo_name|
|
|
290
300
|
if repo_name =~ GITHUB_PULL_REQUEST_URL
|
|
@@ -577,7 +587,7 @@ module Bundler
|
|
|
577
587
|
|
|
578
588
|
return m unless backtrace && dsl_path && contents
|
|
579
589
|
|
|
580
|
-
trace_line = backtrace.find {|l| l.include?(dsl_path
|
|
590
|
+
trace_line = backtrace.find {|l| l.include?(dsl_path) } || trace_line
|
|
581
591
|
return m unless trace_line
|
|
582
592
|
line_numer = trace_line.split(":")[1].to_i - 1
|
|
583
593
|
return m unless line_numer
|
|
@@ -603,7 +613,7 @@ module Bundler
|
|
|
603
613
|
|
|
604
614
|
def parse_line_number_from_description
|
|
605
615
|
description = self.description
|
|
606
|
-
if dsl_path && description =~ /((#{Regexp.quote File.expand_path(dsl_path)}|#{Regexp.quote dsl_path
|
|
616
|
+
if dsl_path && description =~ /((#{Regexp.quote File.expand_path(dsl_path)}|#{Regexp.quote dsl_path}):\d+)/
|
|
607
617
|
trace_line = Regexp.last_match[1]
|
|
608
618
|
description = description.sub(/\n.*\n(\.\.\.)? *\^~+$/, "").sub(/#{Regexp.quote trace_line}:\s*/, "").sub("\n", " - ")
|
|
609
619
|
end
|
data/lib/bundler/errors.rb
CHANGED
|
@@ -217,15 +217,15 @@ module Bundler
|
|
|
217
217
|
end
|
|
218
218
|
|
|
219
219
|
class InsecureInstallPathError < BundlerError
|
|
220
|
-
def initialize(path)
|
|
220
|
+
def initialize(name, path)
|
|
221
|
+
@name = name
|
|
221
222
|
@path = path
|
|
222
223
|
end
|
|
223
224
|
|
|
224
225
|
def message
|
|
225
|
-
"
|
|
226
|
-
"#{@path} is world-writable
|
|
227
|
-
"
|
|
228
|
-
"Please change the permissions of this directory or choose a different install path."
|
|
226
|
+
"Bundler cannot reinstall #{@name} because there's a previous installation of it at #{@path} that is unsafe to remove.\n" \
|
|
227
|
+
"The parent of #{@path} is world-writable and does not have the sticky bit set, making it insecure to remove due to potential vulnerabilities.\n" \
|
|
228
|
+
"Please change the permissions of #{File.dirname(@path)} or choose a different install path."
|
|
229
229
|
end
|
|
230
230
|
|
|
231
231
|
status_code(38)
|
|
@@ -244,4 +244,6 @@ module Bundler
|
|
|
244
244
|
|
|
245
245
|
status_code(39)
|
|
246
246
|
end
|
|
247
|
+
|
|
248
|
+
class InvalidArgumentError < BundlerError; status_code(40); end
|
|
247
249
|
end
|
data/lib/bundler/fetcher.rb
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
require_relative "vendored_persistent"
|
|
4
4
|
require_relative "vendored_timeout"
|
|
5
5
|
require "cgi"
|
|
6
|
-
|
|
6
|
+
require_relative "vendored_securerandom"
|
|
7
7
|
require "zlib"
|
|
8
8
|
|
|
9
9
|
module Bundler
|
|
@@ -182,7 +182,7 @@ module Bundler
|
|
|
182
182
|
agent << " ci/#{cis.join(",")}" if cis.any?
|
|
183
183
|
|
|
184
184
|
# add a random ID so we can consolidate runs server-side
|
|
185
|
-
agent << " " << SecureRandom.hex(8)
|
|
185
|
+
agent << " " << Gem::SecureRandom.hex(8)
|
|
186
186
|
|
|
187
187
|
# add any user agent strings set in the config
|
|
188
188
|
extra_ua = Bundler.settings[:user_agent]
|
data/lib/bundler/inline.rb
CHANGED
|
@@ -46,11 +46,9 @@ def gemfile(install = false, options = {}, &gemfile)
|
|
|
46
46
|
Bundler::Plugin.gemfile_install(&gemfile) if Bundler.feature_flag.plugins?
|
|
47
47
|
builder = Bundler::Dsl.new
|
|
48
48
|
builder.instance_eval(&gemfile)
|
|
49
|
-
builder.check_primary_source_safety
|
|
50
49
|
|
|
51
50
|
Bundler.settings.temporary(deployment: false, frozen: false) do
|
|
52
51
|
definition = builder.to_definition(nil, true)
|
|
53
|
-
def definition.lock(*); end
|
|
54
52
|
definition.validate_runtime!
|
|
55
53
|
|
|
56
54
|
if install || definition.missing_specs?
|
|
@@ -62,8 +60,25 @@ def gemfile(install = false, options = {}, &gemfile)
|
|
|
62
60
|
end
|
|
63
61
|
end
|
|
64
62
|
|
|
65
|
-
|
|
66
|
-
|
|
63
|
+
begin
|
|
64
|
+
runtime = Bundler::Runtime.new(nil, definition).setup
|
|
65
|
+
rescue Gem::LoadError => e
|
|
66
|
+
name = e.name
|
|
67
|
+
version = e.requirement.requirements.first[1]
|
|
68
|
+
activated_version = Gem.loaded_specs[name].version
|
|
69
|
+
|
|
70
|
+
Bundler.ui.info \
|
|
71
|
+
"The #{name} gem was resolved to #{version}, but #{activated_version} was activated by Bundler while installing it, causing a conflict. " \
|
|
72
|
+
"Bundler will now retry resolving with #{activated_version} instead."
|
|
73
|
+
|
|
74
|
+
builder.dependencies.delete_if {|d| d.name == name }
|
|
75
|
+
builder.instance_eval { gem name, activated_version }
|
|
76
|
+
definition = builder.to_definition(nil, true)
|
|
77
|
+
|
|
78
|
+
retry
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
runtime.require
|
|
67
82
|
end
|
|
68
83
|
end
|
|
69
84
|
|
|
@@ -2,14 +2,15 @@
|
|
|
2
2
|
|
|
3
3
|
module Bundler
|
|
4
4
|
class GemInstaller
|
|
5
|
-
attr_reader :spec, :standalone, :worker, :force, :installer
|
|
5
|
+
attr_reader :spec, :standalone, :worker, :force, :local, :installer
|
|
6
6
|
|
|
7
|
-
def initialize(spec, installer, standalone = false, worker = 0, force = false)
|
|
7
|
+
def initialize(spec, installer, standalone = false, worker = 0, force = false, local = false)
|
|
8
8
|
@spec = spec
|
|
9
9
|
@installer = installer
|
|
10
10
|
@standalone = standalone
|
|
11
11
|
@worker = worker
|
|
12
12
|
@force = force
|
|
13
|
+
@local = local
|
|
13
14
|
end
|
|
14
15
|
|
|
15
16
|
def install_from_spec
|
|
@@ -54,6 +55,7 @@ module Bundler
|
|
|
54
55
|
spec.source.install(
|
|
55
56
|
spec,
|
|
56
57
|
force: force,
|
|
58
|
+
local: local,
|
|
57
59
|
build_args: Array(spec_settings),
|
|
58
60
|
previous_spec: previous_spec,
|
|
59
61
|
)
|
|
@@ -68,11 +68,12 @@ module Bundler
|
|
|
68
68
|
|
|
69
69
|
attr_reader :size
|
|
70
70
|
|
|
71
|
-
def initialize(installer, all_specs, size, standalone, force, skip: nil)
|
|
71
|
+
def initialize(installer, all_specs, size, standalone, force, local: false, skip: nil)
|
|
72
72
|
@installer = installer
|
|
73
73
|
@size = size
|
|
74
74
|
@standalone = standalone
|
|
75
75
|
@force = force
|
|
76
|
+
@local = local
|
|
76
77
|
@specs = all_specs.map {|s| SpecInstallation.new(s) }
|
|
77
78
|
@specs.each do |spec_install|
|
|
78
79
|
spec_install.state = :installed if skip.include?(spec_install.name)
|
|
@@ -127,7 +128,7 @@ module Bundler
|
|
|
127
128
|
def do_install(spec_install, worker_num)
|
|
128
129
|
Plugin.hook(Plugin::Events::GEM_BEFORE_INSTALL, spec_install)
|
|
129
130
|
gem_installer = Bundler::GemInstaller.new(
|
|
130
|
-
spec_install.spec, @installer, @standalone, worker_num, @force
|
|
131
|
+
spec_install.spec, @installer, @standalone, worker_num, @force, @local
|
|
131
132
|
)
|
|
132
133
|
success, message = gem_installer.install_from_spec
|
|
133
134
|
if success
|
data/lib/bundler/installer.rb
CHANGED
|
@@ -194,9 +194,14 @@ module Bundler
|
|
|
194
194
|
# that said, it's a rare situation (other than rake), and parallel
|
|
195
195
|
# installation is SO MUCH FASTER. so we let people opt in.
|
|
196
196
|
def install(options)
|
|
197
|
-
|
|
197
|
+
standalone = options[:standalone]
|
|
198
|
+
force = options[:force]
|
|
199
|
+
local = options[:local]
|
|
198
200
|
jobs = installation_parallelization(options)
|
|
199
|
-
|
|
201
|
+
spec_installations = ParallelInstaller.call(self, @definition.specs, jobs, standalone, force, local: local)
|
|
202
|
+
spec_installations.each do |installation|
|
|
203
|
+
post_install_messages[installation.name] = installation.post_install_message if installation.has_post_install_message?
|
|
204
|
+
end
|
|
200
205
|
end
|
|
201
206
|
|
|
202
207
|
def installation_parallelization(options)
|
|
@@ -238,18 +243,11 @@ module Bundler
|
|
|
238
243
|
end
|
|
239
244
|
end
|
|
240
245
|
|
|
241
|
-
def install_in_parallel(size, standalone, force = false)
|
|
242
|
-
spec_installations = ParallelInstaller.call(self, @definition.specs, size, standalone, force)
|
|
243
|
-
spec_installations.each do |installation|
|
|
244
|
-
post_install_messages[installation.name] = installation.post_install_message if installation.has_post_install_message?
|
|
245
|
-
end
|
|
246
|
-
end
|
|
247
|
-
|
|
248
246
|
# returns whether or not a re-resolve was needed
|
|
249
247
|
def resolve_if_needed(options)
|
|
250
|
-
@definition.prefer_local! if options["prefer-local"]
|
|
248
|
+
@definition.prefer_local! if options[:"prefer-local"]
|
|
251
249
|
|
|
252
|
-
if options[
|
|
250
|
+
if options[:local] || (@definition.no_resolve_needed? && !@definition.missing_specs?)
|
|
253
251
|
@definition.resolve_with_cache!
|
|
254
252
|
false
|
|
255
253
|
else
|
|
@@ -1,24 +1,12 @@
|
|
|
1
1
|
.\" generated with nRonn/v0.11.1
|
|
2
2
|
.\" https://github.com/n-ronn/nronn/tree/0.11.1
|
|
3
|
-
.TH "BUNDLE\-ADD" "1" "
|
|
3
|
+
.TH "BUNDLE\-ADD" "1" "September 2024" ""
|
|
4
4
|
.SH "NAME"
|
|
5
5
|
\fBbundle\-add\fR \- Add gem to the Gemfile and run bundle install
|
|
6
6
|
.SH "SYNOPSIS"
|
|
7
|
-
\fBbundle add\fR \fIGEM_NAME\fR [\-\-group=GROUP] [\-\-version=VERSION] [\-\-source=SOURCE] [\-\-path=PATH] [\-\-git=GIT
|
|
7
|
+
\fBbundle add\fR \fIGEM_NAME\fR [\-\-group=GROUP] [\-\-version=VERSION] [\-\-source=SOURCE] [\-\-path=PATH] [\-\-git=GIT|\-\-github=GITHUB] [\-\-branch=BRANCH] [\-\-ref=REF] [\-\-skip\-install] [\-\-strict|\-\-optimistic]
|
|
8
8
|
.SH "DESCRIPTION"
|
|
9
|
-
Adds the named gem to the Gemfile and run \fBbundle install\fR\. \fBbundle install\fR can be avoided by using the flag \fB\-\-skip\-install\fR\.
|
|
10
|
-
.P
|
|
11
|
-
Example:
|
|
12
|
-
.P
|
|
13
|
-
bundle add rails
|
|
14
|
-
.P
|
|
15
|
-
bundle add rails \-\-version "< 3\.0, > 1\.1"
|
|
16
|
-
.P
|
|
17
|
-
bundle add rails \-\-version "~> 5\.0\.0" \-\-source "https://gems\.example\.com" \-\-group "development"
|
|
18
|
-
.P
|
|
19
|
-
bundle add rails \-\-skip\-install
|
|
20
|
-
.P
|
|
21
|
-
bundle add rails \-\-group "development, test"
|
|
9
|
+
Adds the named gem to the [\fBGemfile(5)\fR][Gemfile(5)] and run \fBbundle install\fR\. \fBbundle install\fR can be avoided by using the flag \fB\-\-skip\-install\fR\.
|
|
22
10
|
.SH "OPTIONS"
|
|
23
11
|
.TP
|
|
24
12
|
\fB\-\-version\fR, \fB\-v\fR
|
|
@@ -56,4 +44,27 @@ Adds optimistic declaration of version\.
|
|
|
56
44
|
.TP
|
|
57
45
|
\fB\-\-strict\fR
|
|
58
46
|
Adds strict declaration of version\.
|
|
59
|
-
|
|
47
|
+
.SH "EXAMPLES"
|
|
48
|
+
.IP "1." 4
|
|
49
|
+
You can add the \fBrails\fR gem to the Gemfile without any version restriction\. The source of the gem will be the global source\.
|
|
50
|
+
.IP
|
|
51
|
+
\fBbundle add rails\fR
|
|
52
|
+
.IP "2." 4
|
|
53
|
+
You can add the \fBrails\fR gem with version greater than 1\.1 (not including 1\.1) and less than 3\.0\.
|
|
54
|
+
.IP
|
|
55
|
+
\fBbundle add rails \-\-version "> 1\.1, < 3\.0"\fR
|
|
56
|
+
.IP "3." 4
|
|
57
|
+
You can use the \fBhttps://gems\.example\.com\fR custom source and assign the gem to a group\.
|
|
58
|
+
.IP
|
|
59
|
+
\fBbundle add rails \-\-version "~> 5\.0\.0" \-\-source "https://gems\.example\.com" \-\-group "development"\fR
|
|
60
|
+
.IP "4." 4
|
|
61
|
+
The following adds the \fBgem\fR entry to the Gemfile without installing the gem\. You can install gems later via \fBbundle install\fR\.
|
|
62
|
+
.IP
|
|
63
|
+
\fBbundle add rails \-\-skip\-install\fR
|
|
64
|
+
.IP "5." 4
|
|
65
|
+
You can assign the gem to more than one group\.
|
|
66
|
+
.IP
|
|
67
|
+
\fBbundle add rails \-\-group "development, test"\fR
|
|
68
|
+
.IP "" 0
|
|
69
|
+
.SH "SEE ALSO"
|
|
70
|
+
Gemfile(5) \fIhttps://bundler\.io/man/gemfile\.5\.html\fR, bundle\-remove(1) \fIbundle\-remove\.1\.html\fR
|
|
@@ -1,26 +1,19 @@
|
|
|
1
1
|
bundle-add(1) -- Add gem to the Gemfile and run bundle install
|
|
2
|
-
|
|
2
|
+
==============================================================
|
|
3
3
|
|
|
4
4
|
## SYNOPSIS
|
|
5
5
|
|
|
6
|
-
`bundle add` <GEM_NAME> [--group=GROUP] [--version=VERSION] [--source=SOURCE]
|
|
6
|
+
`bundle add` <GEM_NAME> [--group=GROUP] [--version=VERSION] [--source=SOURCE]
|
|
7
|
+
[--path=PATH] [--git=GIT|--github=GITHUB] [--branch=BRANCH] [--ref=REF]
|
|
8
|
+
[--skip-install] [--strict|--optimistic]
|
|
7
9
|
|
|
8
10
|
## DESCRIPTION
|
|
9
|
-
Adds the named gem to the Gemfile and run `bundle install`. `bundle install` can be avoided by using the flag `--skip-install`.
|
|
10
11
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
bundle add rails
|
|
14
|
-
|
|
15
|
-
bundle add rails --version "< 3.0, > 1.1"
|
|
16
|
-
|
|
17
|
-
bundle add rails --version "~> 5.0.0" --source "https://gems.example.com" --group "development"
|
|
18
|
-
|
|
19
|
-
bundle add rails --skip-install
|
|
20
|
-
|
|
21
|
-
bundle add rails --group "development, test"
|
|
12
|
+
Adds the named gem to the [`Gemfile(5)`][Gemfile(5)] and run `bundle install`.
|
|
13
|
+
`bundle install` can be avoided by using the flag `--skip-install`.
|
|
22
14
|
|
|
23
15
|
## OPTIONS
|
|
16
|
+
|
|
24
17
|
* `--version`, `-v`:
|
|
25
18
|
Specify version requirements(s) for the added gem.
|
|
26
19
|
|
|
@@ -56,3 +49,33 @@ bundle add rails --group "development, test"
|
|
|
56
49
|
|
|
57
50
|
* `--strict`:
|
|
58
51
|
Adds strict declaration of version.
|
|
52
|
+
|
|
53
|
+
## EXAMPLES
|
|
54
|
+
|
|
55
|
+
1. You can add the `rails` gem to the Gemfile without any version restriction.
|
|
56
|
+
The source of the gem will be the global source.
|
|
57
|
+
|
|
58
|
+
`bundle add rails`
|
|
59
|
+
|
|
60
|
+
2. You can add the `rails` gem with version greater than 1.1 (not including 1.1) and less than 3.0.
|
|
61
|
+
|
|
62
|
+
`bundle add rails --version "> 1.1, < 3.0"`
|
|
63
|
+
|
|
64
|
+
3. You can use the `https://gems.example.com` custom source and assign the gem
|
|
65
|
+
to a group.
|
|
66
|
+
|
|
67
|
+
`bundle add rails --version "~> 5.0.0" --source "https://gems.example.com" --group "development"`
|
|
68
|
+
|
|
69
|
+
4. The following adds the `gem` entry to the Gemfile without installing the
|
|
70
|
+
gem. You can install gems later via `bundle install`.
|
|
71
|
+
|
|
72
|
+
`bundle add rails --skip-install`
|
|
73
|
+
|
|
74
|
+
5. You can assign the gem to more than one group.
|
|
75
|
+
|
|
76
|
+
`bundle add rails --group "development, test"`
|
|
77
|
+
|
|
78
|
+
## SEE ALSO
|
|
79
|
+
|
|
80
|
+
[Gemfile(5)](https://bundler.io/man/gemfile.5.html),
|
|
81
|
+
[bundle-remove(1)](bundle-remove.1.html)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
.\" generated with nRonn/v0.11.1
|
|
2
2
|
.\" https://github.com/n-ronn/nronn/tree/0.11.1
|
|
3
|
-
.TH "BUNDLE\-BINSTUBS" "1" "
|
|
3
|
+
.TH "BUNDLE\-BINSTUBS" "1" "September 2024" ""
|
|
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 nRonn/v0.11.1
|
|
2
2
|
.\" https://github.com/n-ronn/nronn/tree/0.11.1
|
|
3
|
-
.TH "BUNDLE\-CACHE" "1" "
|
|
3
|
+
.TH "BUNDLE\-CACHE" "1" "September 2024" ""
|
|
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 nRonn/v0.11.1
|
|
2
2
|
.\" https://github.com/n-ronn/nronn/tree/0.11.1
|
|
3
|
-
.TH "BUNDLE\-CHECK" "1" "
|
|
3
|
+
.TH "BUNDLE\-CHECK" "1" "September 2024" ""
|
|
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 nRonn/v0.11.1
|
|
2
2
|
.\" https://github.com/n-ronn/nronn/tree/0.11.1
|
|
3
|
-
.TH "BUNDLE\-CLEAN" "1" "
|
|
3
|
+
.TH "BUNDLE\-CLEAN" "1" "September 2024" ""
|
|
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 nRonn/v0.11.1
|
|
2
2
|
.\" https://github.com/n-ronn/nronn/tree/0.11.1
|
|
3
|
-
.TH "BUNDLE\-CONSOLE" "1" "
|
|
3
|
+
.TH "BUNDLE\-CONSOLE" "1" "September 2024" ""
|
|
4
4
|
.SH "NAME"
|
|
5
5
|
\fBbundle\-console\fR \- Deprecated way to open an IRB session with the bundle pre\-loaded
|
|
6
6
|
.SH "SYNOPSIS"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
.\" generated with nRonn/v0.11.1
|
|
2
2
|
.\" https://github.com/n-ronn/nronn/tree/0.11.1
|
|
3
|
-
.TH "BUNDLE\-EXEC" "1" "
|
|
3
|
+
.TH "BUNDLE\-EXEC" "1" "September 2024" ""
|
|
4
4
|
.SH "NAME"
|
|
5
5
|
\fBbundle\-exec\fR \- Execute a command in the context of the bundle
|
|
6
6
|
.SH "SYNOPSIS"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
.\" generated with nRonn/v0.11.1
|
|
2
2
|
.\" https://github.com/n-ronn/nronn/tree/0.11.1
|
|
3
|
-
.TH "BUNDLE\-GEM" "1" "
|
|
3
|
+
.TH "BUNDLE\-GEM" "1" "September 2024" ""
|
|
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 nRonn/v0.11.1
|
|
2
2
|
.\" https://github.com/n-ronn/nronn/tree/0.11.1
|
|
3
|
-
.TH "BUNDLE\-INFO" "1" "
|
|
3
|
+
.TH "BUNDLE\-INFO" "1" "September 2024" ""
|
|
4
4
|
.SH "NAME"
|
|
5
5
|
\fBbundle\-info\fR \- Show information for the given gem in your bundle
|
|
6
6
|
.SH "SYNOPSIS"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
.\" generated with nRonn/v0.11.1
|
|
2
2
|
.\" https://github.com/n-ronn/nronn/tree/0.11.1
|
|
3
|
-
.TH "BUNDLE\-INIT" "1" "
|
|
3
|
+
.TH "BUNDLE\-INIT" "1" "September 2024" ""
|
|
4
4
|
.SH "NAME"
|
|
5
5
|
\fBbundle\-init\fR \- Generates a Gemfile into the current working directory
|
|
6
6
|
.SH "SYNOPSIS"
|