rubygems-update 3.4.20 → 3.4.21

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 (155) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +22 -0
  3. data/Manifest.txt +1 -0
  4. data/bundler/CHANGELOG.md +34 -3
  5. data/bundler/lib/bundler/build_metadata.rb +3 -3
  6. data/bundler/lib/bundler/cli/check.rb +1 -1
  7. data/bundler/lib/bundler/cli/gem.rb +1 -3
  8. data/bundler/lib/bundler/cli/install.rb +2 -2
  9. data/bundler/lib/bundler/cli/lock.rb +26 -23
  10. data/bundler/lib/bundler/cli/open.rb +5 -7
  11. data/bundler/lib/bundler/definition.rb +42 -25
  12. data/bundler/lib/bundler/env.rb +2 -2
  13. data/bundler/lib/bundler/gem_version_promoter.rb +2 -2
  14. data/bundler/lib/bundler/injector.rb +1 -1
  15. data/bundler/lib/bundler/installer/parallel_installer.rb +0 -26
  16. data/bundler/lib/bundler/installer/standalone.rb +13 -6
  17. data/bundler/lib/bundler/lockfile_parser.rb +29 -24
  18. data/bundler/lib/bundler/man/bundle-add.1 +1 -1
  19. data/bundler/lib/bundler/man/bundle-binstubs.1 +1 -1
  20. data/bundler/lib/bundler/man/bundle-cache.1 +1 -1
  21. data/bundler/lib/bundler/man/bundle-check.1 +1 -1
  22. data/bundler/lib/bundler/man/bundle-clean.1 +1 -1
  23. data/bundler/lib/bundler/man/bundle-config.1 +1 -1
  24. data/bundler/lib/bundler/man/bundle-console.1 +1 -1
  25. data/bundler/lib/bundler/man/bundle-doctor.1 +1 -1
  26. data/bundler/lib/bundler/man/bundle-exec.1 +2 -2
  27. data/bundler/lib/bundler/man/bundle-exec.1.ronn +2 -3
  28. data/bundler/lib/bundler/man/bundle-gem.1 +1 -1
  29. data/bundler/lib/bundler/man/bundle-help.1 +1 -1
  30. data/bundler/lib/bundler/man/bundle-info.1 +1 -1
  31. data/bundler/lib/bundler/man/bundle-init.1 +1 -1
  32. data/bundler/lib/bundler/man/bundle-inject.1 +1 -1
  33. data/bundler/lib/bundler/man/bundle-install.1 +1 -1
  34. data/bundler/lib/bundler/man/bundle-list.1 +1 -1
  35. data/bundler/lib/bundler/man/bundle-lock.1 +1 -1
  36. data/bundler/lib/bundler/man/bundle-open.1 +1 -1
  37. data/bundler/lib/bundler/man/bundle-outdated.1 +1 -1
  38. data/bundler/lib/bundler/man/bundle-platform.1 +1 -1
  39. data/bundler/lib/bundler/man/bundle-plugin.1 +17 -17
  40. data/bundler/lib/bundler/man/bundle-plugin.1.ronn +5 -5
  41. data/bundler/lib/bundler/man/bundle-pristine.1 +1 -1
  42. data/bundler/lib/bundler/man/bundle-remove.1 +1 -1
  43. data/bundler/lib/bundler/man/bundle-show.1 +1 -1
  44. data/bundler/lib/bundler/man/bundle-update.1 +1 -1
  45. data/bundler/lib/bundler/man/bundle-version.1 +1 -1
  46. data/bundler/lib/bundler/man/bundle-viz.1 +1 -1
  47. data/bundler/lib/bundler/man/bundle.1 +1 -1
  48. data/bundler/lib/bundler/man/gemfile.5 +1 -1
  49. data/bundler/lib/bundler/resolver/package.rb +5 -0
  50. data/bundler/lib/bundler/resolver.rb +27 -7
  51. data/bundler/lib/bundler/ruby_version.rb +8 -1
  52. data/bundler/lib/bundler/settings.rb +53 -16
  53. data/bundler/lib/bundler/shared_helpers.rb +16 -1
  54. data/bundler/lib/bundler/source/git/git_proxy.rb +13 -4
  55. data/bundler/lib/bundler/spec_set.rb +2 -2
  56. data/bundler/lib/bundler/stub_specification.rb +4 -2
  57. data/bundler/lib/bundler/templates/newgem/Rakefile.tt +6 -2
  58. data/bundler/lib/bundler/version.rb +1 -1
  59. data/bundler/lib/bundler/yaml_serializer.rb +6 -7
  60. data/lib/rubygems/basic_specification.rb +1 -1
  61. data/lib/rubygems/command.rb +2 -2
  62. data/lib/rubygems/command_manager.rb +1 -1
  63. data/lib/rubygems/commands/cert_command.rb +2 -2
  64. data/lib/rubygems/commands/check_command.rb +5 -1
  65. data/lib/rubygems/commands/cleanup_command.rb +1 -1
  66. data/lib/rubygems/commands/contents_command.rb +1 -1
  67. data/lib/rubygems/commands/help_command.rb +2 -2
  68. data/lib/rubygems/commands/open_command.rb +1 -3
  69. data/lib/rubygems/commands/owner_command.rb +1 -1
  70. data/lib/rubygems/commands/setup_command.rb +8 -8
  71. data/lib/rubygems/commands/specification_command.rb +5 -1
  72. data/lib/rubygems/commands/stale_command.rb +1 -1
  73. data/lib/rubygems/commands/update_command.rb +3 -3
  74. data/lib/rubygems/commands/yank_command.rb +1 -1
  75. data/lib/rubygems/config_file.rb +60 -13
  76. data/lib/rubygems/core_ext/kernel_gem.rb +1 -1
  77. data/lib/rubygems/core_ext/kernel_require.rb +1 -1
  78. data/lib/rubygems/defaults.rb +6 -2
  79. data/lib/rubygems/deprecate.rb +2 -1
  80. data/lib/rubygems/doctor.rb +1 -1
  81. data/lib/rubygems/errors.rb +1 -1
  82. data/lib/rubygems/exceptions.rb +1 -1
  83. data/lib/rubygems/ext/builder.rb +5 -4
  84. data/lib/rubygems/ext/cargo_builder.rb +2 -2
  85. data/lib/rubygems/gem_runner.rb +5 -1
  86. data/lib/rubygems/gemcutter_utilities.rb +2 -2
  87. data/lib/rubygems/indexer.rb +1 -1
  88. data/lib/rubygems/install_update_options.rb +1 -1
  89. data/lib/rubygems/installer.rb +8 -8
  90. data/lib/rubygems/package/old.rb +1 -1
  91. data/lib/rubygems/package/tar_writer.rb +1 -1
  92. data/lib/rubygems/package.rb +8 -8
  93. data/lib/rubygems/platform.rb +6 -2
  94. data/lib/rubygems/query_utils.rb +4 -4
  95. data/lib/rubygems/remote_fetcher.rb +10 -2
  96. data/lib/rubygems/request_set.rb +2 -1
  97. data/lib/rubygems/requirement.rb +1 -1
  98. data/lib/rubygems/resolver/api_set.rb +2 -1
  99. data/lib/rubygems/resolver/api_specification.rb +1 -1
  100. data/lib/rubygems/security/signer.rb +10 -2
  101. data/lib/rubygems/security/trust_dir.rb +4 -4
  102. data/lib/rubygems/security.rb +1 -1
  103. data/lib/rubygems/security_option.rb +1 -1
  104. data/lib/rubygems/source.rb +5 -1
  105. data/lib/rubygems/specification.rb +9 -10
  106. data/lib/rubygems/specification_policy.rb +5 -5
  107. data/lib/rubygems/uninstaller.rb +1 -1
  108. data/lib/rubygems/update_suggestion.rb +1 -1
  109. data/lib/rubygems/util.rb +5 -1
  110. data/lib/rubygems/version.rb +3 -2
  111. data/lib/rubygems/yaml_serializer.rb +88 -0
  112. data/lib/rubygems.rb +4 -4
  113. data/rubygems-update.gemspec +1 -1
  114. data/setup.rb +2 -0
  115. data/test/rubygems/bundler_test_gem.rb +6 -3
  116. data/test/rubygems/helper.rb +23 -15
  117. data/test/rubygems/package/tar_test_case.rb +2 -2
  118. data/test/rubygems/test_gem.rb +51 -26
  119. data/test/rubygems/test_gem_command.rb +3 -1
  120. data/test/rubygems/test_gem_commands_cert_command.rb +22 -22
  121. data/test/rubygems/test_gem_commands_cleanup_command.rb +2 -2
  122. data/test/rubygems/test_gem_commands_environment_command.rb +2 -1
  123. data/test/rubygems/test_gem_commands_exec_command.rb +5 -1
  124. data/test/rubygems/test_gem_commands_install_command.rb +3 -3
  125. data/test/rubygems/test_gem_commands_open_command.rb +5 -2
  126. data/test/rubygems/test_gem_commands_pristine_command.rb +2 -2
  127. data/test/rubygems/test_gem_commands_push_command.rb +7 -6
  128. data/test/rubygems/test_gem_commands_signin_command.rb +8 -8
  129. data/test/rubygems/test_gem_commands_uninstall_command.rb +1 -1
  130. data/test/rubygems/test_gem_commands_unpack_command.rb +2 -2
  131. data/test/rubygems/test_gem_config_file.rb +46 -12
  132. data/test/rubygems/test_gem_ext_cargo_builder.rb +2 -2
  133. data/test/rubygems/test_gem_gemcutter_utilities.rb +8 -5
  134. data/test/rubygems/test_gem_install_update_options.rb +3 -3
  135. data/test/rubygems/test_gem_installer.rb +15 -15
  136. data/test/rubygems/test_gem_package.rb +35 -34
  137. data/test/rubygems/test_gem_package_old.rb +1 -1
  138. data/test/rubygems/test_gem_package_tar_header.rb +3 -3
  139. data/test/rubygems/test_gem_package_tar_reader.rb +4 -4
  140. data/test/rubygems/test_gem_package_tar_writer.rb +28 -28
  141. data/test/rubygems/test_gem_rdoc.rb +2 -2
  142. data/test/rubygems/test_gem_remote_fetcher.rb +13 -9
  143. data/test/rubygems/test_gem_request.rb +5 -5
  144. data/test/rubygems/test_gem_request_connection_pools.rb +2 -1
  145. data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +14 -7
  146. data/test/rubygems/test_gem_security.rb +2 -2
  147. data/test/rubygems/test_gem_security_signer.rb +2 -2
  148. data/test/rubygems/test_gem_security_trust_dir.rb +6 -6
  149. data/test/rubygems/test_gem_spec_fetcher.rb +2 -2
  150. data/test/rubygems/test_gem_specification.rb +29 -29
  151. data/test/rubygems/test_gem_update_suggestion.rb +12 -6
  152. data/test/rubygems/test_gem_util.rb +2 -2
  153. data/test/rubygems/test_gem_version.rb +4 -2
  154. data/test/rubygems/utilities.rb +2 -1
  155. metadata +4 -3
@@ -95,6 +95,8 @@ module Bundler
95
95
 
96
96
  @global_config = load_config(global_config_file)
97
97
  @temporary = {}
98
+
99
+ @key_cache = {}
98
100
  end
99
101
 
100
102
  def [](name)
@@ -310,7 +312,7 @@ module Bundler
310
312
  end
311
313
 
312
314
  def key_for(key)
313
- self.class.key_for(key)
315
+ @key_cache[key] ||= self.class.key_for(key)
314
316
  end
315
317
 
316
318
  private
@@ -342,12 +344,12 @@ module Bundler
342
344
  end
343
345
 
344
346
  def is_bool(name)
345
- name = name.to_s
347
+ name = self.class.key_to_s(name)
346
348
  BOOL_KEYS.include?(name) || BOOL_KEYS.include?(parent_setting_for(name))
347
349
  end
348
350
 
349
351
  def is_string(name)
350
- name = name.to_s
352
+ name = self.class.key_to_s(name)
351
353
  STRING_KEYS.include?(name) || name.start_with?("local.") || name.start_with?("mirror.") || name.start_with?("build.")
352
354
  end
353
355
 
@@ -363,11 +365,11 @@ module Bundler
363
365
  end
364
366
 
365
367
  def is_num(key)
366
- NUMBER_KEYS.include?(key.to_s)
368
+ NUMBER_KEYS.include?(self.class.key_to_s(key))
367
369
  end
368
370
 
369
371
  def is_array(key)
370
- ARRAY_KEYS.include?(key.to_s)
372
+ ARRAY_KEYS.include?(self.class.key_to_s(key))
371
373
  end
372
374
 
373
375
  def is_credential(key)
@@ -390,7 +392,7 @@ module Bundler
390
392
  end
391
393
 
392
394
  def set_key(raw_key, value, hash, file)
393
- raw_key = raw_key.to_s
395
+ raw_key = self.class.key_to_s(raw_key)
394
396
  value = array_to_s(value) if is_array(raw_key)
395
397
 
396
398
  key = key_for(raw_key)
@@ -405,13 +407,12 @@ module Bundler
405
407
  return unless file
406
408
  SharedHelpers.filesystem_access(file) do |p|
407
409
  FileUtils.mkdir_p(p.dirname)
408
- require_relative "yaml_serializer"
409
- p.open("w") {|f| f.write(YAMLSerializer.dump(hash)) }
410
+ p.open("w") {|f| f.write(serializer_class.dump(hash)) }
410
411
  end
411
412
  end
412
413
 
413
414
  def converted_value(value, key)
414
- key = key.to_s
415
+ key = self.class.key_to_s(key)
415
416
 
416
417
  if is_array(key)
417
418
  to_array(value)
@@ -470,24 +471,31 @@ module Bundler
470
471
  SharedHelpers.filesystem_access(config_file, :read) do |file|
471
472
  valid_file = file.exist? && !file.size.zero?
472
473
  return {} unless valid_file
473
- require_relative "yaml_serializer"
474
- YAMLSerializer.load(file.read).inject({}) do |config, (k, v)|
475
- new_k = k
476
-
474
+ serializer_class.load(file.read).inject({}) do |config, (k, v)|
477
475
  if k.include?("-")
478
476
  Bundler.ui.warn "Your #{file} config includes `#{k}`, which contains the dash character (`-`).\n" \
479
477
  "This is deprecated, because configuration through `ENV` should be possible, but `ENV` keys cannot include dashes.\n" \
480
478
  "Please edit #{file} and replace any dashes in configuration keys with a triple underscore (`___`)."
481
479
 
482
- new_k = k.gsub("-", "___")
480
+ # string hash keys are frozen
481
+ k = k.gsub("-", "___")
483
482
  end
484
483
 
485
- config[new_k] = v
484
+ config[k] = v
486
485
  config
487
486
  end
488
487
  end
489
488
  end
490
489
 
490
+ def serializer_class
491
+ require "rubygems/yaml_serializer"
492
+ Gem::YAMLSerializer
493
+ rescue LoadError
494
+ # TODO: Remove this when RubyGems 3.4 is EOL
495
+ require_relative "yaml_serializer"
496
+ YAMLSerializer
497
+ end
498
+
491
499
  PER_URI_OPTIONS = %w[
492
500
  fallback_timeout
493
501
  ].freeze
@@ -503,7 +511,7 @@ module Bundler
503
511
 
504
512
  def self.key_for(key)
505
513
  key = normalize_uri(key).to_s if key.is_a?(String) && key.start_with?("http", "mirror.http")
506
- key = key.to_s.gsub(".", "__")
514
+ key = key_to_s(key).gsub(".", "__")
507
515
  key.gsub!("-", "___")
508
516
  key.upcase!
509
517
 
@@ -527,5 +535,34 @@ module Bundler
527
535
  end
528
536
  "#{prefix}#{uri}#{suffix}"
529
537
  end
538
+
539
+ # This is a hot method, so avoid respond_to? checks on every invocation
540
+ if :read.respond_to?(:name)
541
+ def self.key_to_s(key)
542
+ case key
543
+ when String
544
+ key
545
+ when Symbol
546
+ key.name
547
+ when Bundler::URI::HTTP
548
+ key.to_s
549
+ else
550
+ raise ArgumentError, "Invalid key: #{key.inspect}"
551
+ end
552
+ end
553
+ else
554
+ def self.key_to_s(key)
555
+ case key
556
+ when String
557
+ key
558
+ when Symbol
559
+ key.to_s
560
+ when Bundler::URI::HTTP
561
+ key.to_s
562
+ else
563
+ raise ArgumentError, "Invalid key: #{key.inspect}"
564
+ end
565
+ end
566
+ end
530
567
  end
531
568
  end
@@ -197,6 +197,21 @@ module Bundler
197
197
  filesystem_access(gemfile_path) {|g| File.open(g, "w") {|file| file.puts contents } }
198
198
  end
199
199
 
200
+ def relative_gemfile_path
201
+ relative_path_to(Bundler.default_gemfile)
202
+ end
203
+
204
+ def relative_lockfile_path
205
+ relative_path_to(Bundler.default_lockfile)
206
+ end
207
+
208
+ def relative_path_to(destination, from: pwd)
209
+ Pathname.new(destination).relative_path_from(from).to_s
210
+ rescue ArgumentError
211
+ # on Windows, if source and destination are on different drivers, there's no relative path from one to the other
212
+ destination
213
+ end
214
+
200
215
  private
201
216
 
202
217
  def validate_bundle_path
@@ -297,7 +312,7 @@ module Bundler
297
312
  def set_rubyopt
298
313
  rubyopt = [ENV["RUBYOPT"]].compact
299
314
  setup_require = "-r#{File.expand_path("setup", __dir__)}"
300
- return if !rubyopt.empty? && rubyopt.first =~ /#{setup_require}/
315
+ return if !rubyopt.empty? && rubyopt.first =~ /#{Regexp.escape(setup_require)}/
301
316
  rubyopt.unshift setup_require
302
317
  Bundler::SharedHelpers.set_env "RUBYOPT", rubyopt.join(" ")
303
318
  end
@@ -130,7 +130,8 @@ module Bundler
130
130
  end
131
131
  end
132
132
 
133
- git "fetch", "--force", "--quiet", *extra_fetch_args, :dir => destination if @commit_ref
133
+ ref = @commit_ref || (locked_to_full_sha? && @revision)
134
+ git "fetch", "--force", "--quiet", *extra_fetch_args(ref), :dir => destination if ref
134
135
 
135
136
  git "reset", "--hard", @revision, :dir => destination
136
137
 
@@ -247,7 +248,15 @@ module Bundler
247
248
  end
248
249
 
249
250
  def pinned_to_full_sha?
250
- ref =~ /\A\h{40}\z/
251
+ full_sha_revision?(ref)
252
+ end
253
+
254
+ def locked_to_full_sha?
255
+ full_sha_revision?(@revision)
256
+ end
257
+
258
+ def full_sha_revision?(ref)
259
+ ref&.match?(/\A\h{40}\z/)
251
260
  end
252
261
 
253
262
  def git_null(*command, dir: nil)
@@ -411,9 +420,9 @@ module Bundler
411
420
  ["--depth", depth.to_s]
412
421
  end
413
422
 
414
- def extra_fetch_args
423
+ def extra_fetch_args(ref)
415
424
  extra_args = [path.to_s, *depth_args]
416
- extra_args.push(@commit_ref)
425
+ extra_args.push(ref)
417
426
  extra_args
418
427
  end
419
428
 
@@ -100,12 +100,12 @@ module Bundler
100
100
  end
101
101
  end
102
102
 
103
- def incomplete_ruby_specs?(deps)
103
+ def incomplete_for_platform?(deps, platform)
104
104
  return false if @specs.empty?
105
105
 
106
106
  @incomplete_specs = []
107
107
 
108
- self.for(deps, true, [Gem::Platform::RUBY])
108
+ self.for(deps, true, [platform])
109
109
 
110
110
  @incomplete_specs.any?
111
111
  end
@@ -16,7 +16,8 @@ module Bundler
16
16
  # Stub has no concept of source, which means that extension_dir may be wrong
17
17
  # This is the case for git-based gems. So, instead manually assign the extension dir
18
18
  return unless source.respond_to?(:extension_dir_name)
19
- path = File.join(stub.extensions_dir, source.extension_dir_name)
19
+ unique_extension_dir = [source.extension_dir_name, File.basename(full_gem_path)].uniq.join("-")
20
+ path = File.join(stub.extensions_dir, unique_extension_dir)
20
21
  stub.extension_dir = File.expand_path(path)
21
22
  end
22
23
 
@@ -56,7 +57,7 @@ module Bundler
56
57
  end
57
58
 
58
59
  def gem_build_complete_path
59
- File.join(extension_dir, "gem.build_complete")
60
+ stub.gem_build_complete_path
60
61
  end
61
62
 
62
63
  def default_gem?
@@ -108,6 +109,7 @@ module Bundler
108
109
  end
109
110
 
110
111
  rs.source = source
112
+ rs.base_dir = stub.base_dir
111
113
 
112
114
  rs
113
115
  end
@@ -46,7 +46,9 @@ require "rb_sys/extensiontask"
46
46
 
47
47
  task build: :compile
48
48
 
49
- RbSys::ExtensionTask.new(<%= config[:name].inspect %>) do |ext|
49
+ GEMSPEC = Gem::Specification.load("<%= config[:underscored_name] %>.gemspec")
50
+
51
+ RbSys::ExtensionTask.new(<%= config[:name].inspect %>, GEMSPEC) do |ext|
50
52
  ext.lib_dir = "lib/<%= config[:namespaced_path] %>"
51
53
  end
52
54
  <% else -%>
@@ -54,7 +56,9 @@ require "rake/extensiontask"
54
56
 
55
57
  task build: :compile
56
58
 
57
- Rake::ExtensionTask.new("<%= config[:underscored_name] %>") do |ext|
59
+ GEMSPEC = Gem::Specification.load("<%= config[:underscored_name] %>.gemspec")
60
+
61
+ Rake::ExtensionTask.new("<%= config[:underscored_name] %>", GEMSPEC) do |ext|
58
62
  ext.lib_dir = "lib/<%= config[:namespaced_path] %>"
59
63
  end
60
64
  <% end -%>
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: false
2
2
 
3
3
  module Bundler
4
- VERSION = "2.4.20".freeze
4
+ VERSION = "2.4.21".freeze
5
5
 
6
6
  def self.bundler_major_version
7
7
  @bundler_major_version ||= VERSION.split(".").first.to_i
@@ -54,8 +54,8 @@ module Bundler
54
54
  str.split(/\r?\n/).each do |line|
55
55
  if match = HASH_REGEX.match(line)
56
56
  indent, key, quote, val = match.captures
57
- key = convert_to_backward_compatible_key(key)
58
- depth = indent.scan(/ /).length
57
+ convert_to_backward_compatible_key!(key)
58
+ depth = indent.size / 2
59
59
  if quote.empty? && val.empty?
60
60
  new_hash = {}
61
61
  stack[depth][key] = new_hash
@@ -76,14 +76,13 @@ module Bundler
76
76
  end
77
77
 
78
78
  # for settings' keys
79
- def convert_to_backward_compatible_key(key)
80
- key = "#{key}/" if key =~ /https?:/i && key !~ %r{/\Z}
81
- key = key.gsub(".", "__") if key.include?(".")
82
- key
79
+ def convert_to_backward_compatible_key!(key)
80
+ key << "/" if /https?:/i.match?(key) && !%r{/\Z}.match?(key)
81
+ key.gsub!(".", "__")
83
82
  end
84
83
 
85
84
  class << self
86
- private :dump_hash, :convert_to_backward_compatible_key
85
+ private :dump_hash, :convert_to_backward_compatible_key!
87
86
  end
88
87
  end
89
88
  end
@@ -291,7 +291,7 @@ class Gem::BasicSpecification
291
291
  def lib_dirs_glob
292
292
  dirs = if self.raw_require_paths
293
293
  if self.raw_require_paths.size > 1
294
- "{#{self.raw_require_paths.join(',')}}"
294
+ "{#{self.raw_require_paths.join(",")}}"
295
295
  else
296
296
  self.raw_require_paths.first
297
297
  end
@@ -228,7 +228,7 @@ class Gem::Command
228
228
 
229
229
  if args.size > 1
230
230
  raise Gem::CommandLineError,
231
- "Too many gem names (#{args.join(', ')}); please specify only one"
231
+ "Too many gem names (#{args.join(", ")}); please specify only one"
232
232
  end
233
233
 
234
234
  args.first
@@ -431,7 +431,7 @@ class Gem::Command
431
431
  def handles?(args)
432
432
  parser.parse!(args.dup)
433
433
  return true
434
- rescue
434
+ rescue StandardError
435
435
  return false
436
436
  end
437
437
 
@@ -201,7 +201,7 @@ class Gem::CommandManager
201
201
 
202
202
  if possibilities.size > 1
203
203
  raise Gem::CommandLineError,
204
- "Ambiguous command #{cmd_name} matches [#{possibilities.join(', ')}]"
204
+ "Ambiguous command #{cmd_name} matches [#{possibilities.join(", ")}]"
205
205
  elsif possibilities.empty?
206
206
  raise Gem::UnknownCommandError.new(cmd_name)
207
207
  end
@@ -178,7 +178,7 @@ class Gem::Commands::CertCommand < Gem::Command
178
178
 
179
179
  algorithm = options[:key_algorithm] || Gem::Security::DEFAULT_KEY_ALGORITHM
180
180
  key = Gem::Security.create_key(algorithm)
181
- key_path = Gem::Security.write key, "gem-private_key.pem", 0600, passphrase
181
+ key_path = Gem::Security.write key, "gem-private_key.pem", 0o600, passphrase
182
182
 
183
183
  return key, key_path
184
184
  end
@@ -292,7 +292,7 @@ For further reading on signing gems see `ri Gem::Security`.
292
292
  cert = File.read cert_file
293
293
  cert = OpenSSL::X509::Certificate.new cert
294
294
 
295
- permissions = File.stat(cert_file).mode & 0777
295
+ permissions = File.stat(cert_file).mode & 0o777
296
296
 
297
297
  issuer_cert = options[:issuer_cert]
298
298
  issuer_key = options[:key]
@@ -41,7 +41,11 @@ class Gem::Commands::CheckCommand < Gem::Command
41
41
  def check_gems
42
42
  say "Checking gems..."
43
43
  say
44
- gems = get_all_gem_names rescue []
44
+ gems = begin
45
+ get_all_gem_names
46
+ rescue StandardError
47
+ []
48
+ end
45
49
 
46
50
  Gem::Validator.new.alien(gems).sort.each do |key, val|
47
51
  unless val.empty?
@@ -90,7 +90,7 @@ If no gems are named all gems in GEM_HOME are cleaned.
90
90
  verbose do
91
91
  skipped = @default_gems.map {|spec| spec.full_name }
92
92
 
93
- "Skipped default gems: #{skipped.join ', '}"
93
+ "Skipped default gems: #{skipped.join ", "}"
94
94
  end
95
95
  end
96
96
 
@@ -92,7 +92,7 @@ prefix or only the files that are requireable.
92
92
 
93
93
  def files_in_gem(spec)
94
94
  gem_path = spec.full_gem_path
95
- extra = "/{#{spec.require_paths.join ','}}" if options[:lib_only]
95
+ extra = "/{#{spec.require_paths.join ","}}" if options[:lib_only]
96
96
  glob = "#{gem_path}#{extra}/**/*"
97
97
  prefix_re = /#{Regexp.escape(gem_path)}\//
98
98
 
@@ -328,7 +328,7 @@ platform.
328
328
 
329
329
  summary_width = 80 - margin_width - desc_width
330
330
  wrap_indent = " " * (margin_width + desc_width)
331
- format = "#{' ' * margin_width}%-#{desc_width}s%s"
331
+ format = "#{" " * margin_width}%-#{desc_width}s%s"
332
332
 
333
333
  @command_manager.command_names.each do |cmd_name|
334
334
  command = @command_manager[cmd_name]
@@ -367,7 +367,7 @@ platform.
367
367
  command = @command_manager[possibilities.first]
368
368
  command.invoke("--help")
369
369
  elsif possibilities.size > 1
370
- alert_warning "Ambiguous command #{command_name} (#{possibilities.join(', ')})"
370
+ alert_warning "Ambiguous command #{command_name} (#{possibilities.join(", ")})"
371
371
  else
372
372
  alert_warning "Unknown command #{command_name}. Try: gem help commands"
373
373
  end
@@ -70,9 +70,7 @@ class Gem::Commands::OpenCommand < Gem::Command
70
70
  end
71
71
 
72
72
  def open_editor(path)
73
- Dir.chdir(path) do
74
- system(*@editor.split(/\s+/) + [path])
75
- end
73
+ system(*@editor.split(/\s+/) + [path], { :chdir => path })
76
74
  end
77
75
 
78
76
  def spec_for(name)
@@ -79,7 +79,7 @@ permission to.
79
79
 
80
80
  say "Owners for gem: #{name}"
81
81
  owners.each do |owner|
82
- say "- #{owner['email'] || owner['handle'] || owner['id']}"
82
+ say "- #{owner["email"] || owner["handle"] || owner["id"]}"
83
83
  end
84
84
  end
85
85
  end
@@ -134,7 +134,7 @@ prefix and suffix. If ruby was installed as `ruby18`, gem will be
134
134
  installed as `gem18`.
135
135
 
136
136
  By default, this RubyGems will install gem as:
137
- #{Gem.default_exec_format % 'gem'}
137
+ #{Gem.default_exec_format % "gem"}
138
138
  EOF
139
139
  end
140
140
 
@@ -243,7 +243,7 @@ By default, this RubyGems will install gem as:
243
243
  end
244
244
 
245
245
  def install_executables(bin_dir)
246
- prog_mode = options[:prog_mode] || 0755
246
+ prog_mode = options[:prog_mode] || 0o755
247
247
 
248
248
  executables = { "gem" => "exe" }
249
249
  executables.each do |tool, path|
@@ -369,7 +369,7 @@ By default, this RubyGems will install gem as:
369
369
  File.dirname(loaded_from)
370
370
  else
371
371
  target_specs_dir = File.join(default_dir, "specifications", "default")
372
- mkdir_p target_specs_dir, :mode => 0755
372
+ mkdir_p target_specs_dir, :mode => 0o755
373
373
  target_specs_dir
374
374
  end
375
375
 
@@ -393,7 +393,7 @@ By default, this RubyGems will install gem as:
393
393
  end
394
394
 
395
395
  bundler_bin_dir = bundler_spec.bin_dir
396
- mkdir_p bundler_bin_dir, :mode => 0755
396
+ mkdir_p bundler_bin_dir, :mode => 0o755
397
397
  bundler_spec.executables.each do |e|
398
398
  cp File.join("bundler", bundler_spec.bindir, e), File.join(bundler_bin_dir, e)
399
399
  end
@@ -430,8 +430,8 @@ By default, this RubyGems will install gem as:
430
430
  lib_dir, bin_dir = generate_default_dirs
431
431
  end
432
432
 
433
- mkdir_p lib_dir, :mode => 0755
434
- mkdir_p bin_dir, :mode => 0755
433
+ mkdir_p lib_dir, :mode => 0o755
434
+ mkdir_p bin_dir, :mode => 0o755
435
435
 
436
436
  return lib_dir, bin_dir
437
437
  end
@@ -639,10 +639,10 @@ abort "#{deprecation_message}"
639
639
  dest_file = File.join dest_dir, file
640
640
  dest_dir = File.dirname dest_file
641
641
  unless File.directory? dest_dir
642
- mkdir_p dest_dir, :mode => 0755
642
+ mkdir_p dest_dir, :mode => 0o755
643
643
  end
644
644
 
645
- install file, dest_file, :mode => options[:data_mode] || 0644
645
+ install file, dest_file, :mode => options[:data_mode] || 0o644
646
646
  end
647
647
 
648
648
  def remove_file_list(files, dir)
@@ -107,7 +107,11 @@ Specific fields in the specification can be extracted in YAML format:
107
107
 
108
108
  if local?
109
109
  if File.exist? gem
110
- specs << Gem::Package.new(gem).spec rescue nil
110
+ begin
111
+ specs << Gem::Package.new(gem).spec
112
+ rescue StandardError
113
+ nil
114
+ end
111
115
  end
112
116
 
113
117
  if specs.empty?
@@ -34,7 +34,7 @@ longer using.
34
34
  end
35
35
 
36
36
  gem_to_atime.sort_by {|_, atime| atime }.each do |name, atime|
37
- say "#{name} at #{atime.strftime '%c'}"
37
+ say "#{name} at #{atime.strftime "%c"}"
38
38
  end
39
39
  end
40
40
  end
@@ -128,10 +128,10 @@ command to remove old versions.
128
128
  if updated.empty?
129
129
  say "Nothing to update"
130
130
  else
131
- say "Gems updated: #{updated_names.join(' ')}"
131
+ say "Gems updated: #{updated_names.join(" ")}"
132
132
  end
133
- say "Gems already up-to-date: #{up_to_date_names.join(' ')}" unless up_to_date_names.empty?
134
- say "Gems not currently installed: #{not_installed_names.join(' ')}" unless not_installed_names.empty?
133
+ say "Gems already up-to-date: #{up_to_date_names.join(" ")}" unless up_to_date_names.empty?
134
+ say "Gems not currently installed: #{not_installed_names.join(" ")}" unless not_installed_names.empty?
135
135
  end
136
136
 
137
137
  def fetch_remote_gems(spec) # :nodoc:
@@ -89,7 +89,7 @@ data you will need to change them immediately and yank your gem.
89
89
 
90
90
  def get_version_from_requirements(requirements)
91
91
  requirements.requirements.first[1].version
92
- rescue
92
+ rescue StandardError
93
93
  nil
94
94
  end
95
95