rubygems-update 3.4.20 → 3.4.21

Sign up to get free protection for your applications and to get access to all the features.
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