rubygems-update 2.7.6 → 2.7.11

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.
Files changed (148) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +2 -23
  3. data/History.txt +116 -0
  4. data/Manifest.txt +3 -3
  5. data/Rakefile +12 -2
  6. data/bundler/CHANGELOG.md +130 -0
  7. data/bundler/README.md +5 -1
  8. data/bundler/bundler.gemspec +2 -1
  9. data/bundler/lib/bundler.rb +12 -8
  10. data/bundler/lib/bundler/build_metadata.rb +19 -2
  11. data/bundler/lib/bundler/cli.rb +3 -1
  12. data/bundler/lib/bundler/cli/check.rb +1 -1
  13. data/bundler/lib/bundler/cli/exec.rb +4 -4
  14. data/bundler/lib/bundler/cli/gem.rb +5 -2
  15. data/bundler/lib/bundler/cli/init.rb +5 -0
  16. data/bundler/lib/bundler/cli/install.rb +2 -2
  17. data/bundler/lib/bundler/cli/outdated.rb +1 -1
  18. data/bundler/lib/bundler/cli/update.rb +3 -3
  19. data/bundler/lib/bundler/compact_index_client/updater.rb +10 -1
  20. data/bundler/lib/bundler/current_ruby.rb +8 -1
  21. data/bundler/lib/bundler/definition.rb +33 -23
  22. data/bundler/lib/bundler/dep_proxy.rb +2 -2
  23. data/bundler/lib/bundler/dependency.rb +1 -0
  24. data/bundler/lib/bundler/deprecate.rb +2 -1
  25. data/bundler/lib/bundler/endpoint_specification.rb +1 -1
  26. data/bundler/lib/bundler/env.rb +10 -8
  27. data/bundler/lib/bundler/fetcher.rb +3 -3
  28. data/bundler/lib/bundler/fetcher/downloader.rb +10 -5
  29. data/bundler/lib/bundler/fetcher/index.rb +2 -2
  30. data/bundler/lib/bundler/friendly_errors.rb +2 -0
  31. data/bundler/lib/bundler/gem_helper.rb +1 -1
  32. data/bundler/lib/bundler/gem_version_promoter.rb +12 -0
  33. data/bundler/lib/bundler/injector.rb +5 -5
  34. data/bundler/lib/bundler/installer.rb +12 -4
  35. data/bundler/lib/bundler/installer/gem_installer.rb +9 -2
  36. data/bundler/lib/bundler/installer/parallel_installer.rb +1 -1
  37. data/bundler/lib/bundler/lazy_specification.rb +1 -1
  38. data/bundler/lib/bundler/mirror.rb +2 -2
  39. data/bundler/lib/bundler/plugin.rb +2 -2
  40. data/bundler/lib/bundler/plugin/index.rb +7 -2
  41. data/bundler/lib/bundler/process_lock.rb +1 -1
  42. data/bundler/lib/bundler/resolver.rb +10 -9
  43. data/bundler/lib/bundler/resolver/spec_group.rb +0 -5
  44. data/bundler/lib/bundler/ruby_version.rb +1 -1
  45. data/bundler/lib/bundler/rubygems_integration.rb +9 -3
  46. data/bundler/lib/bundler/runtime.rb +2 -2
  47. data/bundler/lib/bundler/shared_helpers.rb +15 -3
  48. data/bundler/lib/bundler/source/git.rb +2 -1
  49. data/bundler/lib/bundler/source/git/git_proxy.rb +6 -1
  50. data/bundler/lib/bundler/source/metadata.rb +1 -1
  51. data/bundler/lib/bundler/source/rubygems.rb +11 -2
  52. data/bundler/lib/bundler/source/rubygems/remote.rb +4 -1
  53. data/bundler/lib/bundler/spec_set.rb +4 -1
  54. data/bundler/lib/bundler/templates/Executable +1 -1
  55. data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +8 -2
  56. data/bundler/lib/bundler/templates/newgem/travis.yml.tt +2 -0
  57. data/bundler/lib/bundler/ui/shell.rb +3 -1
  58. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb +11 -1
  59. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +7 -2
  60. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb +1 -1
  61. data/bundler/lib/bundler/version.rb +1 -1
  62. data/bundler/man/bundle-binstubs.ronn +3 -3
  63. data/bundler/man/bundle-check.ronn +3 -3
  64. data/bundler/man/bundle-config.ronn +13 -9
  65. data/bundler/man/bundle-doctor.ronn +33 -0
  66. data/bundler/man/bundle-exec.ronn +3 -3
  67. data/bundler/man/bundle-gem.ronn +1 -1
  68. data/bundler/man/bundle-init.ronn +15 -4
  69. data/bundler/man/bundle-inject.ronn +3 -3
  70. data/bundler/man/bundle-install.ronn +12 -3
  71. data/bundler/man/bundle-lock.ronn +1 -1
  72. data/bundler/man/bundle-outdated.ronn +1 -1
  73. data/bundler/man/bundle-package.ronn +3 -3
  74. data/bundler/man/bundle-show.ronn +3 -2
  75. data/bundler/man/bundle-update.ronn +18 -14
  76. data/bundler/man/bundle-viz.ronn +1 -1
  77. data/bundler/man/bundle.ronn +27 -27
  78. data/bundler/man/gemfile.5.ronn +24 -9
  79. data/lib/rubygems.rb +24 -11
  80. data/lib/rubygems/bundler_version_finder.rb +9 -22
  81. data/lib/rubygems/command_manager.rb +6 -4
  82. data/lib/rubygems/commands/install_command.rb +7 -0
  83. data/lib/rubygems/commands/owner_command.rb +4 -1
  84. data/lib/rubygems/commands/push_command.rb +37 -4
  85. data/lib/rubygems/commands/setup_command.rb +3 -3
  86. data/lib/rubygems/commands/uninstall_command.rb +1 -1
  87. data/lib/rubygems/commands/unpack_command.rb +1 -1
  88. data/lib/rubygems/core_ext/kernel_require.rb +2 -7
  89. data/lib/rubygems/dependency.rb +1 -0
  90. data/lib/rubygems/dependency_installer.rb +4 -2
  91. data/lib/rubygems/exceptions.rb +5 -1
  92. data/lib/rubygems/gemcutter_utilities.rb +5 -2
  93. data/lib/rubygems/indexer.rb +1 -1
  94. data/lib/rubygems/install_update_options.rb +1 -1
  95. data/lib/rubygems/installer.rb +29 -6
  96. data/lib/rubygems/package.rb +20 -2
  97. data/lib/rubygems/package/tar_header.rb +3 -1
  98. data/lib/rubygems/package/tar_writer.rb +2 -3
  99. data/lib/rubygems/remote_fetcher.rb +1 -1
  100. data/lib/rubygems/request_set.rb +28 -17
  101. data/lib/rubygems/requirement.rb +14 -3
  102. data/lib/rubygems/resolver/api_specification.rb +5 -0
  103. data/lib/rubygems/security.rb +6 -1
  104. data/lib/rubygems/server.rb +3 -3
  105. data/lib/rubygems/source.rb +1 -1
  106. data/lib/rubygems/specification.rb +7 -10
  107. data/lib/rubygems/ssl_certs/{index.rubygems.org → rubygems.org}/GlobalSignRootCA.pem +0 -0
  108. data/lib/rubygems/ssl_certs/rubygems.org/GlobalSignRootCA_R3.pem +21 -0
  109. data/lib/rubygems/test_case.rb +22 -4
  110. data/lib/rubygems/test_utilities.rb +1 -1
  111. data/lib/rubygems/user_interaction.rb +9 -2
  112. data/lib/rubygems/util/licenses.rb +35 -4
  113. data/lib/rubygems/version.rb +7 -1
  114. data/lib/ubygems.rb +3 -0
  115. data/test/rubygems/test_bundled_ca.rb +7 -4
  116. data/test/rubygems/test_gem.rb +45 -10
  117. data/test/rubygems/test_gem_bundler_version_finder.rb +8 -7
  118. data/test/rubygems/test_gem_command_manager.rb +2 -2
  119. data/test/rubygems/test_gem_commands_build_command.rb +2 -0
  120. data/test/rubygems/test_gem_commands_install_command.rb +37 -0
  121. data/test/rubygems/test_gem_commands_push_command.rb +20 -0
  122. data/test/rubygems/test_gem_commands_setup_command.rb +6 -1
  123. data/test/rubygems/test_gem_commands_signin_command.rb +1 -1
  124. data/test/rubygems/test_gem_commands_uninstall_command.rb +1 -1
  125. data/test/rubygems/test_gem_dependency.rb +1 -1
  126. data/test/rubygems/test_gem_ext_rake_builder.rb +0 -4
  127. data/test/rubygems/test_gem_install_update_options.rb +2 -0
  128. data/test/rubygems/test_gem_installer.rb +109 -3
  129. data/test/rubygems/test_gem_package.rb +90 -5
  130. data/test/rubygems/test_gem_package_tar_header.rb +2 -1
  131. data/test/rubygems/test_gem_remote_fetcher.rb +6 -2
  132. data/test/rubygems/test_gem_request.rb +5 -2
  133. data/test/rubygems/test_gem_requirement.rb +6 -0
  134. data/test/rubygems/test_gem_resolver_api_specification.rb +24 -0
  135. data/test/rubygems/test_gem_resolver_installer_set.rb +1 -1
  136. data/test/rubygems/test_gem_security_policy.rb +3 -3
  137. data/test/rubygems/test_gem_server.rb +12 -12
  138. data/test/rubygems/test_gem_specification.rb +27 -13
  139. data/test/rubygems/test_gem_stream_ui.rb +2 -2
  140. data/test/rubygems/test_gem_text.rb +5 -0
  141. data/test/rubygems/test_gem_util.rb +4 -2
  142. data/test/rubygems/test_gem_version.rb +29 -2
  143. data/util/ci +1 -0
  144. data/util/generate_spdx_license_list.rb +15 -6
  145. data/util/update_bundled_ca_certificates.rb +1 -3
  146. metadata +12 -12
  147. data/lib/rubygems/ssl_certs/rubygems.global.ssl.fastly.net/DigiCertHighAssuranceEVRootCA.pem +0 -23
  148. data/lib/rubygems/ssl_certs/rubygems.org/AddTrustExternalCARoot.pem +0 -25
@@ -293,7 +293,12 @@ module Bundler
293
293
 
294
294
  def set_bundle_variables
295
295
  begin
296
- Bundler::SharedHelpers.set_env "BUNDLE_BIN_PATH", Bundler.rubygems.bin_path("bundler", "bundle", VERSION)
296
+ exe_file = Bundler.rubygems.bin_path("bundler", "bundle", VERSION)
297
+ unless File.exist?(exe_file)
298
+ exe_file = File.expand_path("../../../exe/bundle", __FILE__)
299
+ end
300
+
301
+ Bundler::SharedHelpers.set_env "BUNDLE_BIN_PATH", exe_file
297
302
  rescue Gem::GemNotFoundException
298
303
  Bundler::SharedHelpers.set_env "BUNDLE_BIN_PATH", File.expand_path("../../../exe/bundle", __FILE__)
299
304
  end
@@ -324,7 +329,7 @@ module Bundler
324
329
  end
325
330
 
326
331
  def bundler_ruby_lib
327
- File.expand_path("../..", __FILE__)
332
+ resolve_path File.expand_path("../..", __FILE__)
328
333
  end
329
334
 
330
335
  def clean_load_path
@@ -336,12 +341,19 @@ module Bundler
336
341
  loaded_gem_paths = Bundler.rubygems.loaded_gem_paths
337
342
 
338
343
  $LOAD_PATH.reject! do |p|
339
- next if File.expand_path(p).start_with?(bundler_lib)
344
+ next if resolve_path(p).start_with?(bundler_lib)
340
345
  loaded_gem_paths.delete(p)
341
346
  end
342
347
  $LOAD_PATH.uniq!
343
348
  end
344
349
 
350
+ def resolve_path(path)
351
+ expanded = File.expand_path(path)
352
+ return expanded unless File.respond_to?(:realpath) && File.exist?(expanded)
353
+
354
+ File.realpath(expanded)
355
+ end
356
+
345
357
  def prints_major_deprecations?
346
358
  require "bundler"
347
359
  deprecation_release = Bundler::VERSION.split(".").drop(1).include?("99")
@@ -21,6 +21,7 @@ module Bundler
21
21
  %w[ref branch tag revision].each {|k| options[k] = options[k].to_s if options[k] }
22
22
 
23
23
  @uri = options["uri"] || ""
24
+ @safe_uri = URICredentialsFilter.credential_filtered_uri(@uri)
24
25
  @branch = options["branch"]
25
26
  @ref = options["ref"] || options["branch"] || options["tag"] || "master"
26
27
  @submodules = options["submodules"]
@@ -77,7 +78,7 @@ module Bundler
77
78
  nil
78
79
  end
79
80
 
80
- "#{uri} (at #{at}#{rev})"
81
+ "#{@safe_uri} (at #{at}#{rev})"
81
82
  end
82
83
 
83
84
  def name
@@ -131,7 +131,12 @@ module Bundler
131
131
  # method 2
132
132
  SharedHelpers.chdir(destination) do
133
133
  git_retry %(fetch --force --quiet --tags "#{path}")
134
- git "reset --hard #{@revision}"
134
+
135
+ begin
136
+ git "reset --hard #{@revision}"
137
+ rescue GitCommandError
138
+ raise MissingGitRevisionError.new(@revision, URICredentialsFilter.credential_filtered_uri(uri))
139
+ end
135
140
 
136
141
  if submodules
137
142
  git_retry "submodule update --init --recursive"
@@ -19,7 +19,7 @@ module Bundler
19
19
  # can't point to the actual gemspec or else the require paths will be wrong
20
20
  s.loaded_from = File.expand_path("..", __FILE__)
21
21
  end
22
- if loaded_spec = nil && Bundler.rubygems.loaded_specs("bundler")
22
+ if loaded_spec = Bundler.rubygems.loaded_specs("bundler")
23
23
  idx << loaded_spec # this has to come after the fake gemspec, to override it
24
24
  elsif local_spec = Bundler.rubygems.find_name("bundler").find {|s| s.version.to_s == VERSION }
25
25
  idx << local_spec
@@ -138,6 +138,8 @@ module Bundler
138
138
  bin_path = Bundler.system_bindir
139
139
  end
140
140
 
141
+ Bundler.mkdir_p bin_path, :no_sudo => true unless spec.executables.empty? || Bundler.rubygems.provides?(">= 2.7.5")
142
+
141
143
  installed_spec = nil
142
144
  Bundler.rubygems.preserve_paths do
143
145
  installed_spec = Bundler::RubyGemsGemInstaller.at(
@@ -336,7 +338,11 @@ module Bundler
336
338
  end
337
339
 
338
340
  def remove_auth(remote)
339
- remote.dup.tap {|uri| uri.user = uri.password = nil }.to_s
341
+ if remote.user || remote.password
342
+ remote.dup.tap {|uri| uri.user = uri.password = nil }.to_s
343
+ else
344
+ remote.to_s
345
+ end
340
346
  end
341
347
 
342
348
  def installed_specs
@@ -477,7 +483,10 @@ module Bundler
477
483
  else
478
484
  uri = spec.remote.uri
479
485
  Bundler.ui.confirm("Fetching #{version_message(spec)}")
480
- Bundler.rubygems.download_gem(spec, uri, download_path)
486
+ rubygems_local_path = Bundler.rubygems.download_gem(spec, uri, download_path)
487
+ if rubygems_local_path != local_path
488
+ FileUtils.mv(rubygems_local_path, local_path)
489
+ end
481
490
  cache_globally(spec, local_path)
482
491
  end
483
492
  end
@@ -25,7 +25,10 @@ module Bundler
25
25
 
26
26
  cache_uri = original_uri || uri
27
27
 
28
- uri_parts = [cache_uri.host, cache_uri.user, cache_uri.port, cache_uri.path]
28
+ # URI::File of Ruby 2.6 returns empty string when given "file://".
29
+ host = defined?(URI::File) && cache_uri.is_a?(URI::File) ? nil : cache_uri.host
30
+
31
+ uri_parts = [host, cache_uri.user, cache_uri.port, cache_uri.path]
29
32
  uri_digest = SharedHelpers.digest(:MD5).hexdigest(uri_parts.compact.join("."))
30
33
 
31
34
  uri_parts[-1] = uri_digest
@@ -37,7 +37,10 @@ module Bundler
37
37
  elsif check
38
38
  return false
39
39
  elsif raise_on_missing
40
- raise "Unable to find a spec satisfying #{dep} in the set. Perhaps the lockfile is corrupted?"
40
+ others = lookup[dep.name] if match_current_platform
41
+ message = "Unable to find a spec satisfying #{dep} in the set. Perhaps the lockfile is corrupted?"
42
+ message += " Found #{others.join(", ")} that did not match the current platform." if others && !others.empty?
43
+ raise GemNotFound, message
41
44
  end
42
45
  end
43
46
 
@@ -15,7 +15,7 @@ ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../<%= relative_gemfile_path %>",
15
15
  bundle_binstub = File.expand_path("../bundle", __FILE__)
16
16
 
17
17
  if File.file?(bundle_binstub)
18
- if File.read(bundle_binstub, 150) =~ /This file was generated by Bundler/
18
+ if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/
19
19
  load(bundle_binstub)
20
20
  else
21
21
  abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run.
@@ -23,13 +23,19 @@ Gem::Specification.new do |spec|
23
23
  # to allow pushing to a single host or delete this section to allow pushing to any host.
24
24
  if spec.respond_to?(:metadata)
25
25
  spec.metadata["allowed_push_host"] = "TODO: Set to 'http://mygemserver.com'"
26
+
27
+ spec.metadata["homepage_uri"] = spec.homepage
28
+ spec.metadata["source_code_uri"] = "TODO: Put your gem's public repo URL here."
29
+ spec.metadata["changelog_uri"] = "TODO: Put your gem's CHANGELOG.md URL here."
26
30
  else
27
31
  raise "RubyGems 2.0 or newer is required to protect against " \
28
32
  "public gem pushes."
29
33
  end
30
34
 
31
- spec.files = `git ls-files -z`.split("\x0").reject do |f|
32
- f.match(%r{^(test|spec|features)/})
35
+ # Specify which files should be added to the gem when it is released.
36
+ # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
37
+ spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
38
+ `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
33
39
  end
34
40
  spec.bindir = "exe"
35
41
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
@@ -1,5 +1,7 @@
1
+ ---
1
2
  sudo: false
2
3
  language: ruby
4
+ cache: bundler
3
5
  rvm:
4
6
  - <%= RUBY_VERSION %>
5
7
  before_install: gem install bundler -v <%= Bundler::VERSION %>
@@ -109,7 +109,9 @@ module Bundler
109
109
  end
110
110
 
111
111
  def tell_err(message, color = nil, newline = nil)
112
- newline = message.to_s !~ /( |\t)\Z/ unless newline
112
+ return if @shell.send(:stderr).closed?
113
+
114
+ newline ||= message.to_s !~ /( |\t)\Z/
113
115
  message = word_wrap(message) if newline.is_a?(Hash) && newline[:wrap]
114
116
 
115
117
  color = nil if color && !$stderr.tty?
@@ -108,11 +108,21 @@ module Bundler::Molinillo
108
108
  # dependency graph?
109
109
  # @return true iff there is a path following edges within this {#graph}
110
110
  def path_to?(other)
111
- equal?(other) || successors.any? { |v| v.path_to?(other) }
111
+ _path_to?(other)
112
112
  end
113
113
 
114
114
  alias descendent? path_to?
115
115
 
116
+ # @param [Vertex] other the vertex to check if there's a path to
117
+ # @param [Set<Vertex>] visited the vertices of {#graph} that have been visited
118
+ # @return [Boolean] whether there is a path to `other` from `self`
119
+ def _path_to?(other, visited = Set.new)
120
+ return false unless visited.add?(self)
121
+ return true if equal?(other)
122
+ successors.any? { |v| v._path_to?(other, visited) }
123
+ end
124
+ protected :_path_to?
125
+
116
126
  # Is there a path from `other` to `self` following edges in the
117
127
  # dependency graph?
118
128
  # @return true iff there is a path following edges within this {#graph}
@@ -18,7 +18,7 @@ module Bundler::Molinillo
18
18
  # @param [Array<Object>] required_by @see {#required_by}
19
19
  def initialize(dependency, required_by = [])
20
20
  @dependency = dependency
21
- @required_by = required_by
21
+ @required_by = required_by.uniq
22
22
  super()
23
23
  end
24
24
 
@@ -101,9 +101,14 @@ module Bundler::Molinillo
101
101
  printable_requirement = opts.delete(:printable_requirement) { proc { |req| req.to_s } }
102
102
  additional_message_for_conflict = opts.delete(:additional_message_for_conflict) { proc {} }
103
103
  version_for_spec = opts.delete(:version_for_spec) { proc(&:to_s) }
104
+ incompatible_version_message_for_conflict = opts.delete(:incompatible_version_message_for_conflict) do
105
+ proc do |name, _conflict|
106
+ %(#{solver_name} could not find compatible versions for #{possibility_type} "#{name}":)
107
+ end
108
+ end
104
109
 
105
110
  conflicts.sort.reduce(''.dup) do |o, (name, conflict)|
106
- o << %(\n#{solver_name} could not find compatible versions for #{possibility_type} "#{name}":\n)
111
+ o << "\n" << incompatible_version_message_for_conflict.call(name, conflict) << "\n"
107
112
  if conflict.locked_requirement
108
113
  o << %( In snapshot (#{name_for_locking_dependency_source}):\n)
109
114
  o << %( #{printable_requirement.call(conflict.locked_requirement)}\n)
@@ -2,5 +2,5 @@
2
2
 
3
3
  module Bundler::Molinillo
4
4
  # The version of Bundler::Molinillo.
5
- VERSION = '0.6.4'.freeze
5
+ VERSION = '0.6.6'.freeze
6
6
  end
@@ -7,7 +7,7 @@ module Bundler
7
7
  # We're doing this because we might write tests that deal
8
8
  # with other versions of bundler and we are unsure how to
9
9
  # handle this better.
10
- VERSION = "1.16.1" unless defined?(::Bundler::VERSION)
10
+ VERSION = "1.16.6" unless defined?(::Bundler::VERSION)
11
11
 
12
12
  def self.overwrite_loaded_gem_version
13
13
  begin
@@ -7,7 +7,7 @@ bundle-binstubs(1) -- Install the binstubs of the listed gems
7
7
 
8
8
  ## DESCRIPTION
9
9
 
10
- Binstubs are scripts that wrap aroung executables. Bundler creates a
10
+ Binstubs are scripts that wrap around executables. Bundler creates a
11
11
  small Ruby file (a binstub) that loads Bundler, runs the command,
12
12
  and puts it into `bin/`. Binstubs are a shortcut-or alternative-
13
13
  to always using `bundle exec`. This gives you a file that can by run
@@ -34,10 +34,10 @@ Calling binstubs with [GEM [GEM]] will create binstubs for all given gems.
34
34
  Makes binstubs that can work without depending on Rubygems or Bundler at
35
35
  runtime.
36
36
 
37
- * `--sheband`:
37
+ * `--shebang`:
38
38
  Specify a different shebang executable name than the default (default 'ruby')
39
39
 
40
40
  ## BUNDLE INSTALL --BINSTUBS
41
41
 
42
42
  To create binstubs for all the gems in the bundle you can use the `--binstubs`
43
- flag in [bundle install(1)][bundle-install].
43
+ flag in [bundle install(1)](bundle-install.1.html).
@@ -18,9 +18,9 @@ If not, the first missing gem is listed and Bundler exits status 1.
18
18
  ## OPTIONS
19
19
 
20
20
  * `--dry-run`:
21
- Locks the `Gemfile(5)` before running the command.
21
+ Locks the [`Gemfile(5)`][Gemfile(5)] before running the command.
22
22
  * `--gemfile`:
23
- Use the specified gemfile instead of the `Gemfile(5)`
23
+ Use the specified gemfile instead of the [`Gemfile(5)`][Gemfile(5)].
24
24
  * `--path`:
25
- Specify a different path than the system default ($BUNDLE_PATH or $GEM_HOME).
25
+ Specify a different path than the system default (`$BUNDLE_PATH` or `$GEM_HOME`).
26
26
  Bundler will remember this value for future installs on this machine.
@@ -7,10 +7,14 @@ bundle-config(1) -- Set bundler configuration options
7
7
 
8
8
  ## DESCRIPTION
9
9
 
10
- This command allows you to interact with bundler's configuration system.
11
- Bundler retrieves its configuration from the local application (`app/.bundle/config`),
12
- environment variables, and the user's home directory (`~/.bundle/config`),
13
- in that order of priority.
10
+ This command allows you to interact with Bundler's configuration system.
11
+
12
+ Bundler loads configuration settings in this order:
13
+
14
+ 1. Local config (`app/.bundle/config`)
15
+ 2. Environmental variables (`ENV`)
16
+ 3. Global config (`~/.bundle/config`)
17
+ 4. Bundler default config
14
18
 
15
19
  Executing `bundle config` with no parameters will print a list of all
16
20
  bundler configuration for the current bundle, and where that configuration
@@ -76,7 +80,7 @@ The options that can be configured are:
76
80
 
77
81
  ## BUILD OPTIONS
78
82
 
79
- You can use `bundle config` to give bundler the flags to pass to the gem
83
+ You can use `bundle config` to give Bundler the flags to pass to the gem
80
84
  installer every time bundler tries to install a particular gem.
81
85
 
82
86
  A very common example, the `mysql` gem, requires Snow Leopard users to
@@ -98,11 +102,11 @@ After running this command, every time bundler needs to install the
98
102
  Configuration keys in bundler have two forms: the canonical form and the
99
103
  environment variable form.
100
104
 
101
- For instance, passing the `--without` flag to [bundle install(1)][bundle-install]
105
+ For instance, passing the `--without` flag to [bundle install(1)](bundle-install.1.html)
102
106
  prevents Bundler from installing certain groups specified in the Gemfile(5). Bundler
103
107
  persists this value in `app/.bundle/config` so that calls to `Bundler.setup`
104
108
  do not try to find gems from the `Gemfile` that you didn't install. Additionally,
105
- subsequent calls to [bundle install(1)][bundle-install] remember this setting
109
+ subsequent calls to [bundle install(1)](bundle-install.1.html) remember this setting
106
110
  and skip those groups.
107
111
 
108
112
  The canonical form of this configuration is `"without"`. To convert the canonical
@@ -116,7 +120,7 @@ the environment variable `BUNDLE_LOCAL__RACK`.
116
120
  ## LIST OF AVAILABLE KEYS
117
121
 
118
122
  The following is a list of all configuration keys and their purpose. You can
119
- learn more about their operation in [bundle install(1)][bundle-install].
123
+ learn more about their operation in [bundle install(1)](bundle-install.1.html).
120
124
 
121
125
  * `allow_bundler_dependency_conflicts` (`BUNDLE_ALLOW_BUNDLER_DEPENDENCY_CONFLICTS`):
122
126
  Allow resolving to specifications that have dependencies on `bundler` that
@@ -277,7 +281,7 @@ learn more about their operation in [bundle install(1)][bundle-install].
277
281
  A `:`-separated list of groups whose gems bundler should not install.
278
282
 
279
283
  In general, you should set these settings per-application by using the applicable
280
- flag to the [bundle install(1)][bundle-install] or [bundle package(1)][bundle-package] command.
284
+ flag to the [bundle install(1)](bundle-install.1.html) or [bundle package(1)](bundle-package.1.html) command.
281
285
 
282
286
  You can set them globally either via environment variables or `bundle config`,
283
287
  whichever is preferable for your setup. If you use both, environment variables
@@ -0,0 +1,33 @@
1
+ bundle-doctor(1) -- Checks the bundle for common problems
2
+ =========================================================
3
+
4
+ ## SYNOPSIS
5
+
6
+ `bundle doctor` [--quiet]
7
+ [--gemfile=GEMFILE]
8
+
9
+ ## DESCRIPTION
10
+
11
+ Checks your Gemfile and gem environment for common problems. If issues
12
+ are detected, Bundler prints them and exits status 1. Otherwise,
13
+ Bundler prints a success message and exits status 0.
14
+
15
+ Examples of common problems caught by bundle-doctor include:
16
+
17
+ * Invalid Bundler settings
18
+ * Mismatched Ruby versions
19
+ * Mismatched platforms
20
+ * Uninstalled gems
21
+ * Missing dependencies
22
+
23
+ ## OPTIONS
24
+
25
+ * `--quiet`:
26
+ Only output warnings and errors.
27
+
28
+ * `--gemfile=<gemfile>`:
29
+ The location of the Gemfile(5) which Bundler should use. This defaults
30
+ to a Gemfile(5) in the current working directory. In general, Bundler
31
+ will assume that the location of the Gemfile(5) is also the project's
32
+ root and will try to find `Gemfile.lock` and `vendor/cache` relative
33
+ to this location.
@@ -8,11 +8,11 @@ bundle-exec(1) -- Execute a command in the context of the bundle
8
8
  ## DESCRIPTION
9
9
 
10
10
  This command executes the command, making all gems specified in the
11
- `Gemfile(5)` available to `require` in Ruby programs.
11
+ [`Gemfile(5)`][Gemfile(5)] available to `require` in Ruby programs.
12
12
 
13
13
  Essentially, if you would normally have run something like
14
14
  `rspec spec/my_spec.rb`, and you want to use the gems specified
15
- in the `Gemfile(5)` and installed via [bundle install(1)][bundle-install], you
15
+ in the [`Gemfile(5)`][Gemfile(5)] and installed via [bundle install(1)](bundle-install.1.html), you
16
16
  should run `bundle exec rspec spec/my_spec.rb`.
17
17
 
18
18
  Note that `bundle exec` does not require that an executable is
@@ -27,7 +27,7 @@ available on your shell's `$PATH`.
27
27
 
28
28
  ## BUNDLE INSTALL --BINSTUBS
29
29
 
30
- If you use the `--binstubs` flag in [bundle install(1)][bundle-install], Bundler will
30
+ If you use the `--binstubs` flag in [bundle install(1)](bundle-install.1.html), Bundler will
31
31
  automatically create a directory (which defaults to `app_root/bin`)
32
32
  containing all of the executables available from gems in the bundle.
33
33
 
@@ -75,4 +75,4 @@ configuration file using the following names:
75
75
 
76
76
  ## SEE ALSO
77
77
 
78
- * [bundle-config](http://bundler.io/v1.14/bundle_config.html)
78
+ * [bundle config(1)](bundle-config.1.html)
@@ -7,12 +7,23 @@ bundle-init(1) -- Generates a Gemfile into the current working directory
7
7
 
8
8
  ## DESCRIPTION
9
9
 
10
- Init generates a default `Gemfile(5)` in the current working directory. When
11
- adding a `Gemfile(5)` to a gem with a gemspec, the `--gemspec` option will
10
+ Init generates a default [`Gemfile(5)`][Gemfile(5)] in the current working directory. When
11
+ adding a [`Gemfile(5)`][Gemfile(5)] to a gem with a gemspec, the `--gemspec` option will
12
12
  automatically add each dependency listed in the gemspec file to the newly
13
- created `Gemfile(5)`.
13
+ created [`Gemfile(5)`][Gemfile(5)].
14
14
 
15
15
  ## OPTIONS
16
16
 
17
17
  * `--gemspec`:
18
- Use the specified .gemspec to create the `Gemfile(5)`
18
+ Use the specified .gemspec to create the [`Gemfile(5)`][Gemfile(5)]
19
+
20
+ ## FILES
21
+
22
+ Included in the default [`Gemfile(5)`][Gemfile(5)]
23
+ generated is the line `# frozen_string_literal: true`. This is a magic comment
24
+ supported for the first time in Ruby 2.3. The presence of this line
25
+ results in all string literals in the file being implicitly frozen.
26
+
27
+ ## SEE ALSO
28
+
29
+ [Gemfile(5)](http://bundler.io/man/gemfile.5.html)