bundler 2.5.5 → 2.5.16
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +171 -0
- data/lib/bundler/build_metadata.rb +2 -2
- data/lib/bundler/cli/binstubs.rb +1 -1
- data/lib/bundler/cli/fund.rb +1 -1
- data/lib/bundler/cli/gem.rb +8 -15
- data/lib/bundler/cli/install.rb +1 -1
- data/lib/bundler/cli/lock.rb +5 -4
- data/lib/bundler/cli/plugin.rb +3 -2
- data/lib/bundler/cli.rb +14 -31
- data/lib/bundler/compact_index_client/cache.rb +47 -72
- data/lib/bundler/compact_index_client/parser.rb +84 -0
- data/lib/bundler/compact_index_client.rb +51 -80
- data/lib/bundler/constants.rb +8 -1
- data/lib/bundler/definition.rb +168 -99
- data/lib/bundler/dependency.rb +2 -1
- data/lib/bundler/dsl.rb +16 -1
- data/lib/bundler/endpoint_specification.rb +11 -0
- data/lib/bundler/env.rb +1 -1
- data/lib/bundler/environment_preserver.rb +5 -23
- data/lib/bundler/errors.rb +14 -0
- data/lib/bundler/fetcher/compact_index.rb +15 -24
- data/lib/bundler/fetcher/downloader.rb +1 -1
- data/lib/bundler/fetcher.rb +2 -2
- data/lib/bundler/gem_helper.rb +1 -1
- data/lib/bundler/gem_helpers.rb +14 -7
- data/lib/bundler/gem_version_promoter.rb +42 -38
- data/lib/bundler/injector.rb +4 -6
- data/lib/bundler/installer/gem_installer.rb +0 -1
- data/lib/bundler/installer/standalone.rb +0 -3
- data/lib/bundler/installer.rb +11 -13
- data/lib/bundler/lazy_specification.rb +1 -0
- 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 +3 -1
- data/lib/bundler/man/bundle-check.1.ronn +3 -0
- data/lib/bundler/man/bundle-clean.1 +1 -1
- data/lib/bundler/man/bundle-config.1 +2 -4
- data/lib/bundler/man/bundle-config.1.ronn +1 -4
- 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 +7 -1
- data/lib/bundler/man/bundle-gem.1.ronn +11 -0
- 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 +3 -3
- data/lib/bundler/man/bundle-install.1.ronn +2 -2
- 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 +7 -4
- data/lib/bundler/man/bundle-plugin.1.ronn +7 -3
- 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 -3
- data/lib/bundler/man/gemfile.5.ronn +2 -2
- data/lib/bundler/mirror.rb +3 -3
- data/lib/bundler/plugin/api/source.rb +2 -2
- data/lib/bundler/plugin/installer/path.rb +18 -0
- data/lib/bundler/plugin/installer.rb +36 -16
- data/lib/bundler/plugin/source_list.rb +4 -4
- data/lib/bundler/resolver/base.rb +4 -0
- data/lib/bundler/resolver/candidate.rb +5 -17
- data/lib/bundler/resolver/package.rb +4 -0
- data/lib/bundler/resolver/spec_group.rb +20 -2
- data/lib/bundler/resolver.rb +72 -33
- data/lib/bundler/rubygems_ext.rb +98 -10
- data/lib/bundler/rubygems_gem_installer.rb +35 -2
- data/lib/bundler/rubygems_integration.rb +16 -2
- data/lib/bundler/runtime.rb +2 -2
- data/lib/bundler/self_manager.rb +22 -2
- data/lib/bundler/settings.rb +26 -20
- data/lib/bundler/setup.rb +6 -0
- data/lib/bundler/shared_helpers.rb +6 -4
- data/lib/bundler/source/git/git_proxy.rb +9 -1
- data/lib/bundler/source/git.rb +15 -1
- data/lib/bundler/source/metadata.rb +2 -0
- data/lib/bundler/source/path.rb +0 -13
- data/lib/bundler/source/rubygems/remote.rb +1 -1
- data/lib/bundler/source/rubygems.rb +33 -32
- data/lib/bundler/source_list.rb +26 -2
- data/lib/bundler/spec_set.rb +15 -13
- data/lib/bundler/stub_specification.rb +8 -0
- data/lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt +77 -29
- data/lib/bundler/templates/newgem/newgem.gemspec.tt +4 -3
- data/lib/bundler/templates/newgem/rubocop.yml.tt +0 -5
- data/lib/bundler/uri_credentials_filter.rb +2 -2
- data/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +22 -22
- data/lib/bundler/vendor/pub_grub/lib/pub_grub/static_package_source.rb +1 -0
- data/lib/bundler/vendored_net_http.rb +20 -5
- data/lib/bundler/vendored_timeout.rb +7 -3
- data/lib/bundler/vendored_uri.rb +18 -1
- data/lib/bundler/version.rb +1 -1
- data/lib/bundler/yaml_serializer.rb +11 -6
- data/lib/bundler.rb +29 -3
- metadata +5 -3
data/lib/bundler/errors.rb
CHANGED
@@ -230,4 +230,18 @@ module Bundler
|
|
230
230
|
|
231
231
|
status_code(38)
|
232
232
|
end
|
233
|
+
|
234
|
+
class CorruptBundlerInstallError < BundlerError
|
235
|
+
def initialize(loaded_spec)
|
236
|
+
@loaded_spec = loaded_spec
|
237
|
+
end
|
238
|
+
|
239
|
+
def message
|
240
|
+
"The running version of Bundler (#{Bundler::VERSION}) does not match the version of the specification installed for it (#{@loaded_spec.version}). " \
|
241
|
+
"This can be caused by reinstalling Ruby without removing previous installation, leaving around an upgraded default version of Bundler. " \
|
242
|
+
"Reinstalling Ruby from scratch should fix the problem."
|
243
|
+
end
|
244
|
+
|
245
|
+
status_code(39)
|
246
|
+
end
|
233
247
|
end
|
@@ -4,8 +4,6 @@ require_relative "base"
|
|
4
4
|
require_relative "../worker"
|
5
5
|
|
6
6
|
module Bundler
|
7
|
-
autoload :CompactIndexClient, File.expand_path("../compact_index_client", __dir__)
|
8
|
-
|
9
7
|
class Fetcher
|
10
8
|
class CompactIndex < Base
|
11
9
|
def self.compact_index_request(method_name)
|
@@ -36,15 +34,8 @@ module Bundler
|
|
36
34
|
|
37
35
|
until remaining_gems.empty?
|
38
36
|
log_specs { "Looking up gems #{remaining_gems.inspect}" }
|
39
|
-
|
40
|
-
|
41
|
-
parallel_compact_index_client.dependencies(remaining_gems)
|
42
|
-
rescue TooManyRequestsError
|
43
|
-
@bundle_worker&.stop
|
44
|
-
@bundle_worker = nil # reset it. Not sure if necessary
|
45
|
-
serial_compact_index_client.dependencies(remaining_gems)
|
46
|
-
end
|
47
|
-
next_gems = deps.flat_map {|d| d[3].flat_map(&:first) }.uniq
|
37
|
+
deps = fetch_gem_infos(remaining_gems).flatten(1)
|
38
|
+
next_gems = deps.flat_map {|d| d[CompactIndexClient::INFO_DEPS].flat_map(&:first) }.uniq
|
48
39
|
deps.each {|dep| gem_info << dep }
|
49
40
|
complete_gems.concat(deps.map(&:first)).uniq!
|
50
41
|
remaining_gems = next_gems - complete_gems
|
@@ -61,7 +52,7 @@ module Bundler
|
|
61
52
|
return nil
|
62
53
|
end
|
63
54
|
# Read info file checksums out of /versions, so we can know if gems are up to date
|
64
|
-
compact_index_client.
|
55
|
+
compact_index_client.available?
|
65
56
|
rescue CompactIndexClient::Updater::MismatchedChecksumError => e
|
66
57
|
Bundler.ui.debug(e.message)
|
67
58
|
nil
|
@@ -81,20 +72,20 @@ module Bundler
|
|
81
72
|
end
|
82
73
|
end
|
83
74
|
|
84
|
-
def
|
85
|
-
compact_index_client.
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
compact_index_client
|
75
|
+
def fetch_gem_infos(names)
|
76
|
+
in_parallel(names) {|name| compact_index_client.info(name) }
|
77
|
+
rescue TooManyRequestsError # rubygems.org is rate limiting us, slow down.
|
78
|
+
@bundle_worker&.stop
|
79
|
+
@bundle_worker = nil # reset it. Not sure if necessary
|
80
|
+
compact_index_client.reset!
|
81
|
+
names.map {|name| compact_index_client.info(name) }
|
93
82
|
end
|
94
83
|
|
95
|
-
def
|
96
|
-
|
97
|
-
|
84
|
+
def in_parallel(inputs, &blk)
|
85
|
+
func = lambda {|object, _index| blk.call(object) }
|
86
|
+
worker = bundle_worker(func)
|
87
|
+
inputs.each {|input| worker.enq(input) }
|
88
|
+
inputs.map { worker.deq }
|
98
89
|
end
|
99
90
|
|
100
91
|
def bundle_worker(func = nil)
|
@@ -23,7 +23,7 @@ module Bundler
|
|
23
23
|
when Gem::Net::HTTPSuccess, Gem::Net::HTTPNotModified
|
24
24
|
response
|
25
25
|
when Gem::Net::HTTPRedirection
|
26
|
-
new_uri =
|
26
|
+
new_uri = Gem::URI.parse(response["location"])
|
27
27
|
if new_uri.host == uri.host
|
28
28
|
new_uri.user = uri.user
|
29
29
|
new_uri.password = uri.password
|
data/lib/bundler/fetcher.rb
CHANGED
@@ -111,7 +111,7 @@ module Bundler
|
|
111
111
|
spec -= [nil, "ruby", ""]
|
112
112
|
spec_file_name = "#{spec.join "-"}.gemspec"
|
113
113
|
|
114
|
-
uri =
|
114
|
+
uri = Gem::URI.parse("#{remote_uri}#{Gem::MARSHAL_SPEC_DIR}#{spec_file_name}.rz")
|
115
115
|
spec = if uri.scheme == "file"
|
116
116
|
path = Gem::Util.correct_for_windows_path(uri.path)
|
117
117
|
Bundler.safe_load_marshal Bundler.rubygems.inflate(Gem.read_binary(path))
|
@@ -255,7 +255,7 @@ module Bundler
|
|
255
255
|
|
256
256
|
con = Gem::Net::HTTP::Persistent.new name: "bundler", proxy: :ENV
|
257
257
|
if gem_proxy = Gem.configuration[:http_proxy]
|
258
|
-
con.proxy =
|
258
|
+
con.proxy = Gem::URI.parse(gem_proxy) if gem_proxy != :no_proxy
|
259
259
|
end
|
260
260
|
|
261
261
|
if remote_uri.scheme == "https"
|
data/lib/bundler/gem_helper.rb
CHANGED
@@ -47,7 +47,7 @@ module Bundler
|
|
47
47
|
built_gem_path = build_gem
|
48
48
|
end
|
49
49
|
|
50
|
-
desc "Generate SHA512 checksum
|
50
|
+
desc "Generate SHA512 checksum of #{name}-#{version}.gem into the checksums directory."
|
51
51
|
task "build:checksum" => "build" do
|
52
52
|
build_checksum(built_gem_path)
|
53
53
|
end
|
data/lib/bundler/gem_helpers.rb
CHANGED
@@ -46,19 +46,26 @@ module Bundler
|
|
46
46
|
end
|
47
47
|
module_function :platform_specificity_match
|
48
48
|
|
49
|
-
def select_best_platform_match(specs, platform)
|
50
|
-
matching =
|
49
|
+
def select_best_platform_match(specs, platform, force_ruby: false, prefer_locked: false)
|
50
|
+
matching = if force_ruby
|
51
|
+
specs.select {|spec| spec.match_platform(Gem::Platform::RUBY) && spec.force_ruby_platform! }
|
52
|
+
else
|
53
|
+
specs.select {|spec| spec.match_platform(platform) }
|
54
|
+
end
|
55
|
+
|
56
|
+
if prefer_locked
|
57
|
+
locked_originally = matching.select {|spec| spec.is_a?(LazySpecification) }
|
58
|
+
return locked_originally if locked_originally.any?
|
59
|
+
end
|
51
60
|
|
52
61
|
sort_best_platform_match(matching, platform)
|
53
62
|
end
|
54
63
|
module_function :select_best_platform_match
|
55
64
|
|
56
|
-
def
|
57
|
-
|
58
|
-
|
59
|
-
sort_best_platform_match(matching, Gem::Platform::RUBY)
|
65
|
+
def select_best_local_platform_match(specs, force_ruby: false)
|
66
|
+
select_best_platform_match(specs, local_platform, force_ruby: force_ruby).map(&:materialize_for_installation).compact
|
60
67
|
end
|
61
|
-
module_function :
|
68
|
+
module_function :select_best_local_platform_match
|
62
69
|
|
63
70
|
def sort_best_platform_match(matching, platform)
|
64
71
|
exact = matching.select {|spec| spec.platform == platform }
|
@@ -45,17 +45,37 @@ module Bundler
|
|
45
45
|
|
46
46
|
# Given a Resolver::Package and an Array of Specifications of available
|
47
47
|
# versions for a gem, this method will return the Array of Specifications
|
48
|
-
# sorted
|
49
|
-
#
|
50
|
-
#
|
48
|
+
# sorted in an order to give preference to the current level (:major, :minor
|
49
|
+
# or :patch) when resolution is deciding what versions best resolve all
|
50
|
+
# dependencies in the bundle.
|
51
51
|
# @param package [Resolver::Package] The package being resolved.
|
52
52
|
# @param specs [Specification] An array of Specifications for the package.
|
53
|
-
# @return [Specification] A new instance of the Specification Array sorted
|
54
|
-
# possibly filtered.
|
53
|
+
# @return [Specification] A new instance of the Specification Array sorted.
|
55
54
|
def sort_versions(package, specs)
|
56
|
-
|
55
|
+
locked_version = package.locked_version
|
57
56
|
|
58
|
-
|
57
|
+
result = specs.sort do |a, b|
|
58
|
+
unless package.prerelease_specified? || pre?
|
59
|
+
a_pre = a.prerelease?
|
60
|
+
b_pre = b.prerelease?
|
61
|
+
|
62
|
+
next 1 if a_pre && !b_pre
|
63
|
+
next -1 if b_pre && !a_pre
|
64
|
+
end
|
65
|
+
|
66
|
+
if major? || locked_version.nil?
|
67
|
+
b <=> a
|
68
|
+
elsif either_version_older_than_locked?(a, b, locked_version)
|
69
|
+
b <=> a
|
70
|
+
elsif segments_do_not_match?(a, b, :major)
|
71
|
+
a <=> b
|
72
|
+
elsif !minor? && segments_do_not_match?(a, b, :minor)
|
73
|
+
a <=> b
|
74
|
+
else
|
75
|
+
b <=> a
|
76
|
+
end
|
77
|
+
end
|
78
|
+
post_sort(result, package.unlock?, locked_version)
|
59
79
|
end
|
60
80
|
|
61
81
|
# @return [bool] Convenience method for testing value of level variable.
|
@@ -73,9 +93,18 @@ module Bundler
|
|
73
93
|
pre == true
|
74
94
|
end
|
75
95
|
|
76
|
-
|
96
|
+
# Given a Resolver::Package and an Array of Specifications of available
|
97
|
+
# versions for a gem, this method will truncate the Array if strict
|
98
|
+
# is true. That means filtering out downgrades from the version currently
|
99
|
+
# locked, and filtering out upgrades that go past the selected level (major,
|
100
|
+
# minor, or patch).
|
101
|
+
# @param package [Resolver::Package] The package being resolved.
|
102
|
+
# @param specs [Specification] An array of Specifications for the package.
|
103
|
+
# @return [Specification] A new instance of the Specification Array
|
104
|
+
# truncated.
|
105
|
+
def filter_versions(package, specs)
|
106
|
+
return specs unless strict
|
77
107
|
|
78
|
-
def filter_dep_specs(specs, package)
|
79
108
|
locked_version = package.locked_version
|
80
109
|
return specs if locked_version.nil? || major?
|
81
110
|
|
@@ -89,32 +118,7 @@ module Bundler
|
|
89
118
|
end
|
90
119
|
end
|
91
120
|
|
92
|
-
|
93
|
-
locked_version = package.locked_version
|
94
|
-
|
95
|
-
result = specs.sort do |a, b|
|
96
|
-
unless package.prerelease_specified? || pre?
|
97
|
-
a_pre = a.prerelease?
|
98
|
-
b_pre = b.prerelease?
|
99
|
-
|
100
|
-
next -1 if a_pre && !b_pre
|
101
|
-
next 1 if b_pre && !a_pre
|
102
|
-
end
|
103
|
-
|
104
|
-
if major? || locked_version.nil?
|
105
|
-
a <=> b
|
106
|
-
elsif either_version_older_than_locked?(a, b, locked_version)
|
107
|
-
a <=> b
|
108
|
-
elsif segments_do_not_match?(a, b, :major)
|
109
|
-
b <=> a
|
110
|
-
elsif !minor? && segments_do_not_match?(a, b, :minor)
|
111
|
-
b <=> a
|
112
|
-
else
|
113
|
-
a <=> b
|
114
|
-
end
|
115
|
-
end
|
116
|
-
post_sort(result, package.unlock?, locked_version)
|
117
|
-
end
|
121
|
+
private
|
118
122
|
|
119
123
|
def either_version_older_than_locked?(a, b, locked_version)
|
120
124
|
a.version < locked_version || b.version < locked_version
|
@@ -133,13 +137,13 @@ module Bundler
|
|
133
137
|
if unlock || locked_version.nil?
|
134
138
|
result
|
135
139
|
else
|
136
|
-
|
140
|
+
move_version_to_beginning(result, locked_version)
|
137
141
|
end
|
138
142
|
end
|
139
143
|
|
140
|
-
def
|
144
|
+
def move_version_to_beginning(result, version)
|
141
145
|
move, keep = result.partition {|s| s.version.to_s == version.to_s }
|
142
|
-
|
146
|
+
move.concat(keep)
|
143
147
|
end
|
144
148
|
end
|
145
149
|
end
|
data/lib/bundler/injector.rb
CHANGED
@@ -23,10 +23,7 @@ module Bundler
|
|
23
23
|
# @param [Pathname] lockfile_path The lockfile in which to inject the new dependency.
|
24
24
|
# @return [Array]
|
25
25
|
def inject(gemfile_path, lockfile_path)
|
26
|
-
|
27
|
-
# ensure the lock and Gemfile are synced
|
28
|
-
Bundler.definition.ensure_equivalent_gemfile_and_lockfile(true)
|
29
|
-
end
|
26
|
+
Bundler.definition.ensure_equivalent_gemfile_and_lockfile(true)
|
30
27
|
|
31
28
|
# temporarily unfreeze
|
32
29
|
Bundler.settings.temporary(deployment: false, frozen: false) do
|
@@ -50,7 +47,7 @@ module Bundler
|
|
50
47
|
append_to(gemfile_path, build_gem_lines(@options[:conservative_versioning])) if @deps.any?
|
51
48
|
|
52
49
|
# since we resolved successfully, write out the lockfile
|
53
|
-
@definition.lock
|
50
|
+
@definition.lock
|
54
51
|
|
55
52
|
# invalidate the cached Bundler.definition
|
56
53
|
Bundler.reset_paths!
|
@@ -120,9 +117,10 @@ module Bundler
|
|
120
117
|
github = ", :github => \"#{d.github}\"" unless d.github.nil?
|
121
118
|
branch = ", :branch => \"#{d.branch}\"" unless d.branch.nil?
|
122
119
|
ref = ", :ref => \"#{d.ref}\"" unless d.ref.nil?
|
120
|
+
glob = ", :glob => \"#{d.glob}\"" unless d.glob.nil?
|
123
121
|
require_path = ", :require => #{convert_autorequire(d.autorequire)}" unless d.autorequire.nil?
|
124
122
|
|
125
|
-
%(gem #{name}#{requirement}#{group}#{source}#{path}#{git}#{github}#{branch}#{ref}#{require_path})
|
123
|
+
%(gem #{name}#{requirement}#{group}#{source}#{path}#{git}#{github}#{branch}#{ref}#{glob}#{require_path})
|
126
124
|
end.join("\n")
|
127
125
|
end
|
128
126
|
|
@@ -58,9 +58,6 @@ module Bundler
|
|
58
58
|
else
|
59
59
|
SharedHelpers.relative_path_to(full_path, from: Bundler.root.join(bundler_path))
|
60
60
|
end
|
61
|
-
rescue TypeError
|
62
|
-
error_message = "#{spec.name} #{spec.version} has an invalid gemspec"
|
63
|
-
raise Gem::InvalidSpecificationException.new(error_message)
|
64
61
|
end
|
65
62
|
|
66
63
|
def prevent_gem_activation
|
data/lib/bundler/installer.rb
CHANGED
@@ -69,9 +69,7 @@ module Bundler
|
|
69
69
|
Bundler.create_bundle_path
|
70
70
|
|
71
71
|
ProcessLock.lock do
|
72
|
-
|
73
|
-
@definition.ensure_equivalent_gemfile_and_lockfile(options[:deployment])
|
74
|
-
end
|
72
|
+
@definition.ensure_equivalent_gemfile_and_lockfile(options[:deployment])
|
75
73
|
|
76
74
|
if @definition.dependencies.empty?
|
77
75
|
Bundler.ui.warn "The Gemfile specifies no dependencies"
|
@@ -249,19 +247,19 @@ module Bundler
|
|
249
247
|
|
250
248
|
# returns whether or not a re-resolve was needed
|
251
249
|
def resolve_if_needed(options)
|
252
|
-
@definition.
|
253
|
-
|
254
|
-
if
|
255
|
-
|
250
|
+
@definition.prefer_local! if options["prefer-local"]
|
251
|
+
|
252
|
+
if options["local"] || (@definition.no_resolve_needed? && !@definition.missing_specs?)
|
253
|
+
@definition.resolve_with_cache!
|
254
|
+
false
|
255
|
+
else
|
256
|
+
@definition.resolve_remotely!
|
257
|
+
true
|
256
258
|
end
|
257
|
-
|
258
|
-
@definition.setup_sources_for_resolve
|
259
|
-
|
260
|
-
true
|
261
259
|
end
|
262
260
|
|
263
|
-
def lock
|
264
|
-
@definition.lock
|
261
|
+
def lock
|
262
|
+
@definition.lock
|
265
263
|
end
|
266
264
|
end
|
267
265
|
end
|
@@ -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" "June 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" "June 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" "June 2024" ""
|
4
4
|
.SH "NAME"
|
5
5
|
\fBbundle\-check\fR \- Verifies if dependencies are satisfied by installed gems
|
6
6
|
.SH "SYNOPSIS"
|
@@ -9,6 +9,8 @@
|
|
9
9
|
\fBcheck\fR searches the local machine for each of the gems requested in the Gemfile\. If all gems are found, Bundler prints a success message and exits with a status of 0\.
|
10
10
|
.P
|
11
11
|
If not, the first missing gem is listed and Bundler exits status 1\.
|
12
|
+
.P
|
13
|
+
If the lockfile needs to be updated then it will be resolved using the gems installed on the local machine, if they satisfy the requirements\.
|
12
14
|
.SH "OPTIONS"
|
13
15
|
.TP
|
14
16
|
\fB\-\-dry\-run\fR
|
@@ -15,6 +15,9 @@ a status of 0.
|
|
15
15
|
|
16
16
|
If not, the first missing gem is listed and Bundler exits status 1.
|
17
17
|
|
18
|
+
If the lockfile needs to be updated then it will be resolved using the gems
|
19
|
+
installed on the local machine, if they satisfy the requirements.
|
20
|
+
|
18
21
|
## OPTIONS
|
19
22
|
|
20
23
|
* `--dry-run`:
|
@@ -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" "June 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\-CONFIG" "1" "
|
3
|
+
.TH "BUNDLE\-CONFIG" "1" "June 2024" ""
|
4
4
|
.SH "NAME"
|
5
5
|
\fBbundle\-config\fR \- Set bundler configuration options
|
6
6
|
.SH "SYNOPSIS"
|
@@ -95,8 +95,6 @@ Any periods in the configuration keys must be replaced with two underscores when
|
|
95
95
|
.SH "LIST OF AVAILABLE KEYS"
|
96
96
|
The following is a list of all configuration keys and their purpose\. You can learn more about their operation in bundle install(1) \fIbundle\-install\.1\.html\fR\.
|
97
97
|
.IP "\(bu" 4
|
98
|
-
\fBallow_deployment_source_credential_changes\fR (\fBBUNDLE_ALLOW_DEPLOYMENT_SOURCE_CREDENTIAL_CHANGES\fR): When in deployment mode, allow changing the credentials to a gem's source\. Ex: \fBhttps://some\.host\.com/gems/path/\fR \-> \fBhttps://user_name:password@some\.host\.com/gems/path\fR
|
99
|
-
.IP "\(bu" 4
|
100
98
|
\fBallow_offline_install\fR (\fBBUNDLE_ALLOW_OFFLINE_INSTALL\fR): Allow Bundler to use cached data when installing without network access\.
|
101
99
|
.IP "\(bu" 4
|
102
100
|
\fBauto_clean_without_path\fR (\fBBUNDLE_AUTO_CLEAN_WITHOUT_PATH\fR): Automatically run \fBbundle clean\fR after installing when an explicit \fBpath\fR has not been set and Bundler is not installing into the system gems\.
|
@@ -309,7 +307,7 @@ Any \fB\.\fR characters in a host name are mapped to a double underscore (\fB__\
|
|
309
307
|
.P
|
310
308
|
This means that if you have a gem server named \fBmy\.gem\-host\.com\fR, you'll need to use the \fBBUNDLE_MY__GEM___HOST__COM\fR variable to configure credentials for it through ENV\.
|
311
309
|
.SH "CONFIGURE BUNDLER DIRECTORIES"
|
312
|
-
Bundler's home,
|
310
|
+
Bundler's home, cache and plugin directories and config file can be configured through environment variables\. The default location for Bundler's home directory is \fB~/\.bundle\fR, which all directories inherit from by default\. The following outlines the available environment variables and their default values
|
313
311
|
.IP "" 4
|
314
312
|
.nf
|
315
313
|
BUNDLE_USER_HOME : $HOME/\.bundle
|
@@ -137,9 +137,6 @@ the environment variable `BUNDLE_LOCAL__RACK`.
|
|
137
137
|
The following is a list of all configuration keys and their purpose. You can
|
138
138
|
learn more about their operation in [bundle install(1)](bundle-install.1.html).
|
139
139
|
|
140
|
-
* `allow_deployment_source_credential_changes` (`BUNDLE_ALLOW_DEPLOYMENT_SOURCE_CREDENTIAL_CHANGES`):
|
141
|
-
When in deployment mode, allow changing the credentials to a gem's source.
|
142
|
-
Ex: `https://some.host.com/gems/path/` -> `https://user_name:password@some.host.com/gems/path`
|
143
140
|
* `allow_offline_install` (`BUNDLE_ALLOW_OFFLINE_INSTALL`):
|
144
141
|
Allow Bundler to use cached data when installing without network access.
|
145
142
|
* `auto_clean_without_path` (`BUNDLE_AUTO_CLEAN_WITHOUT_PATH`):
|
@@ -400,7 +397,7 @@ through ENV.
|
|
400
397
|
|
401
398
|
## CONFIGURE BUNDLER DIRECTORIES
|
402
399
|
|
403
|
-
Bundler's home,
|
400
|
+
Bundler's home, cache and plugin directories and config file can be configured
|
404
401
|
through environment variables. The default location for Bundler's home directory is
|
405
402
|
`~/.bundle`, which all directories inherit from by default. The following
|
406
403
|
outlines the available environment variables and their default values
|
@@ -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" "June 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\-GEM" "1" "
|
3
|
+
.TH "BUNDLE\-GEM" "1" "June 2024" ""
|
4
4
|
.SH "NAME"
|
5
5
|
\fBbundle\-gem\fR \- Generate a project skeleton for creating a rubygem
|
6
6
|
.SH "SYNOPSIS"
|
@@ -44,6 +44,8 @@ When Bundler is configured to not generate tests, an interactive prompt will be
|
|
44
44
|
.IP
|
45
45
|
When Bundler is unconfigured, an interactive prompt will be displayed and the answer will be saved in Bundler's global config for future \fBbundle gem\fR use\.
|
46
46
|
.IP "\(bu" 4
|
47
|
+
\fB\-\-no\-test\fR: Do not use a test framework (overrides \fB\-\-test\fR specified in the global config)\.
|
48
|
+
.IP "\(bu" 4
|
47
49
|
\fB\-\-ci\fR, \fB\-\-ci=github\fR, \fB\-\-ci=gitlab\fR, \fB\-\-ci=circle\fR: Specify the continuous integration service that Bundler should use when generating the project\. Acceptable values are \fBgithub\fR, \fBgitlab\fR and \fBcircle\fR\. A configuration file will be generated in the project directory\. Given no option is specified:
|
48
50
|
.IP
|
49
51
|
When Bundler is configured to generate CI files, this defaults to Bundler's global config setting \fBgem\.ci\fR\.
|
@@ -52,6 +54,8 @@ When Bundler is configured to not generate CI files, an interactive prompt will
|
|
52
54
|
.IP
|
53
55
|
When Bundler is unconfigured, an interactive prompt will be displayed and the answer will be saved in Bundler's global config for future \fBbundle gem\fR use\.
|
54
56
|
.IP "\(bu" 4
|
57
|
+
\fB\-\-no\-ci\fR: Do not use a continuous integration service (overrides \fB\-\-ci\fR specified in the global config)\.
|
58
|
+
.IP "\(bu" 4
|
55
59
|
\fB\-\-linter\fR, \fB\-\-linter=rubocop\fR, \fB\-\-linter=standard\fR: Specify the linter and code formatter that Bundler should add to the project's development dependencies\. Acceptable values are \fBrubocop\fR and \fBstandard\fR\. A configuration file will be generated in the project directory\. Given no option is specified:
|
56
60
|
.IP
|
57
61
|
When Bundler is configured to add a linter, this defaults to Bundler's global config setting \fBgem\.linter\fR\.
|
@@ -60,6 +64,8 @@ When Bundler is configured not to add a linter, an interactive prompt will be di
|
|
60
64
|
.IP
|
61
65
|
When Bundler is unconfigured, an interactive prompt will be displayed and the answer will be saved in Bundler's global config for future \fBbundle gem\fR use\.
|
62
66
|
.IP "\(bu" 4
|
67
|
+
\fB\-\-no\-linter\fR: Do not add a linter (overrides \fB\-\-linter\fR specified in the global config)\.
|
68
|
+
.IP "\(bu" 4
|
63
69
|
\fB\-e\fR, \fB\-\-edit[=EDITOR]\fR: Open the resulting GEM_NAME\.gemspec in EDITOR, or the default editor if not specified\. The default is \fB$BUNDLER_EDITOR\fR, \fB$VISUAL\fR, or \fB$EDITOR\fR\.
|
64
70
|
.IP "" 0
|
65
71
|
.SH "SEE ALSO"
|
@@ -76,6 +76,10 @@ configuration file using the following names:
|
|
76
76
|
the answer will be saved in Bundler's global config for future `bundle gem`
|
77
77
|
use.
|
78
78
|
|
79
|
+
* `--no-test`:
|
80
|
+
Do not use a test framework (overrides `--test` specified in the global
|
81
|
+
config).
|
82
|
+
|
79
83
|
* `--ci`, `--ci=github`, `--ci=gitlab`, `--ci=circle`:
|
80
84
|
Specify the continuous integration service that Bundler should use when
|
81
85
|
generating the project. Acceptable values are `github`, `gitlab`
|
@@ -92,6 +96,10 @@ configuration file using the following names:
|
|
92
96
|
the answer will be saved in Bundler's global config for future `bundle gem`
|
93
97
|
use.
|
94
98
|
|
99
|
+
* `--no-ci`:
|
100
|
+
Do not use a continuous integration service (overrides `--ci` specified in
|
101
|
+
the global config).
|
102
|
+
|
95
103
|
* `--linter`, `--linter=rubocop`, `--linter=standard`:
|
96
104
|
Specify the linter and code formatter that Bundler should add to the
|
97
105
|
project's development dependencies. Acceptable values are `rubocop` and
|
@@ -108,6 +116,9 @@ configuration file using the following names:
|
|
108
116
|
the answer will be saved in Bundler's global config for future `bundle gem`
|
109
117
|
use.
|
110
118
|
|
119
|
+
* `--no-linter`:
|
120
|
+
Do not add a linter (overrides `--linter` specified in the global config).
|
121
|
+
|
111
122
|
* `-e`, `--edit[=EDITOR]`:
|
112
123
|
Open the resulting GEM_NAME.gemspec in EDITOR, or the default editor if not
|
113
124
|
specified. The default is `$BUNDLER_EDITOR`, `$VISUAL`, or `$EDITOR`.
|
@@ -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" "June 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" "June 2024" ""
|
4
4
|
.SH "NAME"
|
5
5
|
\fBbundle\-init\fR \- Generates a Gemfile into the current working 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\-INJECT" "1" "
|
3
|
+
.TH "BUNDLE\-INJECT" "1" "June 2024" ""
|
4
4
|
.SH "NAME"
|
5
5
|
\fBbundle\-inject\fR \- Add named gem(s) with version requirements to Gemfile
|
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\-INSTALL" "1" "
|
3
|
+
.TH "BUNDLE\-INSTALL" "1" "June 2024" ""
|
4
4
|
.SH "NAME"
|
5
5
|
\fBbundle\-install\fR \- Install the dependencies specified in your Gemfile
|
6
6
|
.SH "SYNOPSIS"
|
@@ -208,8 +208,8 @@ To explicitly update \fBactionpack\fR, including its dependencies which other ge
|
|
208
208
|
\fBSummary\fR: In general, after making a change to the Gemfile(5) , you should first try to run \fBbundle install\fR, which will guarantee that no other gem in the Gemfile(5) is impacted by the change\. If that does not work, run bundle update(1) \fIbundle\-update\.1\.html\fR\.
|
209
209
|
.SH "SEE ALSO"
|
210
210
|
.IP "\(bu" 4
|
211
|
-
Gem install docs \
|
211
|
+
Gem install docs \fIhttps://guides\.rubygems\.org/rubygems\-basics/#installing\-gems\fR
|
212
212
|
.IP "\(bu" 4
|
213
|
-
Rubygems signing docs \
|
213
|
+
Rubygems signing docs \fIhttps://guides\.rubygems\.org/security/\fR
|
214
214
|
.IP "" 0
|
215
215
|
|