rubygems-update 3.2.24 → 3.2.25

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 (180) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +17 -0
  3. data/Manifest.txt +4 -5
  4. data/bundler/CHANGELOG.md +22 -0
  5. data/bundler/lib/bundler.rb +0 -4
  6. data/bundler/lib/bundler/build_metadata.rb +2 -2
  7. data/bundler/lib/bundler/cli.rb +6 -0
  8. data/bundler/lib/bundler/cli/cache.rb +1 -1
  9. data/bundler/lib/bundler/cli/doctor.rb +1 -1
  10. data/bundler/lib/bundler/cli/install.rb +4 -17
  11. data/bundler/lib/bundler/cli/list.rb +7 -1
  12. data/bundler/lib/bundler/cli/open.rb +1 -2
  13. data/bundler/lib/bundler/cli/update.rb +1 -1
  14. data/bundler/lib/bundler/definition.rb +24 -28
  15. data/bundler/lib/bundler/dsl.rb +14 -1
  16. data/bundler/lib/bundler/installer/gem_installer.rb +3 -16
  17. data/bundler/lib/bundler/lockfile_parser.rb +1 -0
  18. data/bundler/lib/bundler/rubygems_gem_installer.rb +5 -1
  19. data/bundler/lib/bundler/runtime.rb +15 -6
  20. data/bundler/lib/bundler/settings.rb +2 -0
  21. data/bundler/lib/bundler/setup.rb +2 -2
  22. data/bundler/lib/bundler/shared_helpers.rb +0 -7
  23. data/bundler/lib/bundler/source/git/git_proxy.rb +1 -2
  24. data/bundler/lib/bundler/source/rubygems.rb +4 -0
  25. data/bundler/lib/bundler/source_list.rb +16 -3
  26. data/bundler/lib/bundler/spec_set.rb +12 -34
  27. data/bundler/lib/bundler/templates/Executable.bundler +6 -6
  28. data/bundler/lib/bundler/version.rb +1 -1
  29. data/bundler/lib/bundler/worker.rb +17 -2
  30. data/lib/rubygems.rb +1 -11
  31. data/lib/rubygems/config_file.rb +4 -4
  32. data/lib/rubygems/ext/builder.rb +1 -0
  33. data/lib/rubygems/ext/ext_conf_builder.rb +1 -2
  34. data/lib/rubygems/ext/rake_builder.rb +1 -2
  35. data/lib/rubygems/remote_fetcher.rb +0 -1
  36. data/lib/rubygems/requirement.rb +2 -21
  37. data/lib/rubygems/s3_uri_signer.rb +0 -1
  38. data/lib/rubygems/safe_yaml.rb +0 -2
  39. data/lib/rubygems/specification.rb +0 -6
  40. data/rubygems-update.gemspec +1 -1
  41. data/test/rubygems/data/null-type.gemspec.rz +0 -0
  42. data/{lib/rubygems/test_case.rb → test/rubygems/helper.rb} +12 -19
  43. data/{lib → test}/rubygems/installer_test_case.rb +1 -1
  44. data/{lib → test}/rubygems/package/tar_test_case.rb +1 -1
  45. data/test/rubygems/test_bundled_ca.rb +1 -1
  46. data/test/rubygems/test_config.rb +1 -1
  47. data/test/rubygems/test_deprecate.rb +1 -1
  48. data/test/rubygems/test_gem.rb +1 -1
  49. data/test/rubygems/test_gem_available_set.rb +1 -1
  50. data/test/rubygems/test_gem_bundler_version_finder.rb +1 -1
  51. data/test/rubygems/test_gem_command.rb +1 -1
  52. data/test/rubygems/test_gem_command_manager.rb +1 -1
  53. data/test/rubygems/test_gem_commands_build_command.rb +1 -1
  54. data/test/rubygems/test_gem_commands_cert_command.rb +1 -1
  55. data/test/rubygems/test_gem_commands_check_command.rb +1 -1
  56. data/test/rubygems/test_gem_commands_cleanup_command.rb +1 -1
  57. data/test/rubygems/test_gem_commands_contents_command.rb +1 -1
  58. data/test/rubygems/test_gem_commands_dependency_command.rb +1 -1
  59. data/test/rubygems/test_gem_commands_environment_command.rb +1 -1
  60. data/test/rubygems/test_gem_commands_fetch_command.rb +1 -1
  61. data/test/rubygems/test_gem_commands_generate_index_command.rb +1 -1
  62. data/test/rubygems/test_gem_commands_help_command.rb +1 -1
  63. data/test/rubygems/test_gem_commands_info_command.rb +1 -1
  64. data/test/rubygems/test_gem_commands_install_command.rb +1 -1
  65. data/test/rubygems/test_gem_commands_list_command.rb +1 -1
  66. data/test/rubygems/test_gem_commands_lock_command.rb +1 -1
  67. data/test/rubygems/test_gem_commands_mirror.rb +1 -1
  68. data/test/rubygems/test_gem_commands_open_command.rb +1 -1
  69. data/test/rubygems/test_gem_commands_outdated_command.rb +1 -1
  70. data/test/rubygems/test_gem_commands_owner_command.rb +1 -1
  71. data/test/rubygems/test_gem_commands_pristine_command.rb +1 -1
  72. data/test/rubygems/test_gem_commands_push_command.rb +1 -1
  73. data/test/rubygems/test_gem_commands_query_command.rb +1 -1
  74. data/test/rubygems/test_gem_commands_search_command.rb +1 -1
  75. data/test/rubygems/test_gem_commands_server_command.rb +1 -1
  76. data/test/rubygems/test_gem_commands_setup_command.rb +3 -3
  77. data/test/rubygems/test_gem_commands_signin_command.rb +1 -1
  78. data/test/rubygems/test_gem_commands_signout_command.rb +1 -1
  79. data/test/rubygems/test_gem_commands_sources_command.rb +1 -1
  80. data/test/rubygems/test_gem_commands_specification_command.rb +1 -1
  81. data/test/rubygems/test_gem_commands_stale_command.rb +1 -1
  82. data/test/rubygems/test_gem_commands_uninstall_command.rb +1 -1
  83. data/test/rubygems/test_gem_commands_unpack_command.rb +1 -1
  84. data/test/rubygems/test_gem_commands_update_command.rb +1 -1
  85. data/test/rubygems/test_gem_commands_which_command.rb +1 -1
  86. data/test/rubygems/test_gem_commands_yank_command.rb +1 -1
  87. data/test/rubygems/test_gem_config_file.rb +1 -1
  88. data/test/rubygems/test_gem_dependency.rb +1 -1
  89. data/test/rubygems/test_gem_dependency_installer.rb +1 -1
  90. data/test/rubygems/test_gem_dependency_list.rb +1 -1
  91. data/test/rubygems/test_gem_dependency_resolution_error.rb +1 -1
  92. data/test/rubygems/test_gem_doctor.rb +1 -1
  93. data/test/rubygems/test_gem_ext_builder.rb +4 -1
  94. data/test/rubygems/test_gem_ext_cmake_builder.rb +1 -1
  95. data/test/rubygems/test_gem_ext_configure_builder.rb +1 -1
  96. data/test/rubygems/test_gem_ext_ext_conf_builder.rb +1 -1
  97. data/test/rubygems/test_gem_ext_rake_builder.rb +1 -1
  98. data/test/rubygems/test_gem_gem_runner.rb +1 -1
  99. data/test/rubygems/test_gem_gemcutter_utilities.rb +1 -1
  100. data/test/rubygems/test_gem_impossible_dependencies_error.rb +1 -1
  101. data/test/rubygems/test_gem_indexer.rb +1 -1
  102. data/test/rubygems/test_gem_install_update_options.rb +1 -1
  103. data/test/rubygems/test_gem_installer.rb +2 -2
  104. data/test/rubygems/test_gem_local_remote_options.rb +1 -1
  105. data/test/rubygems/test_gem_name_tuple.rb +1 -1
  106. data/test/rubygems/test_gem_package.rb +1 -1
  107. data/test/rubygems/test_gem_package_old.rb +1 -1
  108. data/test/rubygems/test_gem_package_tar_header.rb +1 -1
  109. data/test/rubygems/test_gem_package_tar_reader.rb +1 -1
  110. data/test/rubygems/test_gem_package_tar_reader_entry.rb +1 -1
  111. data/test/rubygems/test_gem_package_tar_writer.rb +1 -1
  112. data/test/rubygems/test_gem_package_task.rb +1 -1
  113. data/test/rubygems/test_gem_path_support.rb +1 -1
  114. data/test/rubygems/test_gem_platform.rb +1 -1
  115. data/test/rubygems/test_gem_rdoc.rb +1 -1
  116. data/test/rubygems/test_gem_remote_fetcher.rb +1 -1
  117. data/test/rubygems/test_gem_request.rb +1 -1
  118. data/test/rubygems/test_gem_request_connection_pools.rb +1 -1
  119. data/test/rubygems/test_gem_request_set.rb +1 -1
  120. data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +1 -1
  121. data/test/rubygems/test_gem_request_set_lockfile.rb +1 -1
  122. data/test/rubygems/test_gem_request_set_lockfile_parser.rb +1 -1
  123. data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +1 -1
  124. data/test/rubygems/test_gem_requirement.rb +35 -1
  125. data/test/rubygems/test_gem_resolver.rb +1 -1
  126. data/test/rubygems/test_gem_resolver_activation_request.rb +1 -1
  127. data/test/rubygems/test_gem_resolver_api_set.rb +1 -1
  128. data/test/rubygems/test_gem_resolver_api_specification.rb +1 -1
  129. data/test/rubygems/test_gem_resolver_best_set.rb +1 -1
  130. data/test/rubygems/test_gem_resolver_composed_set.rb +1 -1
  131. data/test/rubygems/test_gem_resolver_conflict.rb +1 -1
  132. data/test/rubygems/test_gem_resolver_dependency_request.rb +1 -1
  133. data/test/rubygems/test_gem_resolver_git_set.rb +1 -1
  134. data/test/rubygems/test_gem_resolver_git_specification.rb +2 -1
  135. data/test/rubygems/test_gem_resolver_index_set.rb +1 -1
  136. data/test/rubygems/test_gem_resolver_index_specification.rb +1 -1
  137. data/test/rubygems/test_gem_resolver_installed_specification.rb +1 -1
  138. data/test/rubygems/test_gem_resolver_installer_set.rb +1 -1
  139. data/test/rubygems/test_gem_resolver_local_specification.rb +1 -1
  140. data/test/rubygems/test_gem_resolver_lock_set.rb +1 -1
  141. data/test/rubygems/test_gem_resolver_lock_specification.rb +1 -1
  142. data/test/rubygems/test_gem_resolver_requirement_list.rb +1 -1
  143. data/test/rubygems/test_gem_resolver_specification.rb +1 -1
  144. data/test/rubygems/test_gem_resolver_vendor_set.rb +1 -1
  145. data/test/rubygems/test_gem_resolver_vendor_specification.rb +1 -1
  146. data/test/rubygems/test_gem_security.rb +1 -1
  147. data/test/rubygems/test_gem_security_policy.rb +1 -1
  148. data/test/rubygems/test_gem_security_signer.rb +1 -1
  149. data/test/rubygems/test_gem_security_trust_dir.rb +1 -1
  150. data/test/rubygems/test_gem_server.rb +1 -1
  151. data/test/rubygems/test_gem_silent_ui.rb +1 -1
  152. data/test/rubygems/test_gem_source.rb +1 -1
  153. data/test/rubygems/test_gem_source_fetch_problem.rb +1 -1
  154. data/test/rubygems/test_gem_source_git.rb +1 -1
  155. data/test/rubygems/test_gem_source_installed.rb +1 -1
  156. data/test/rubygems/test_gem_source_list.rb +1 -1
  157. data/test/rubygems/test_gem_source_local.rb +1 -1
  158. data/test/rubygems/test_gem_source_lock.rb +1 -1
  159. data/test/rubygems/test_gem_source_specific_file.rb +1 -1
  160. data/test/rubygems/test_gem_source_subpath_problem.rb +1 -1
  161. data/test/rubygems/test_gem_source_vendor.rb +1 -1
  162. data/test/rubygems/test_gem_spec_fetcher.rb +1 -1
  163. data/test/rubygems/test_gem_specification.rb +1 -165
  164. data/test/rubygems/test_gem_stream_ui.rb +1 -1
  165. data/test/rubygems/test_gem_stub_specification.rb +1 -1
  166. data/test/rubygems/test_gem_text.rb +1 -1
  167. data/test/rubygems/test_gem_uninstaller.rb +1 -1
  168. data/test/rubygems/test_gem_unsatisfiable_dependency_error.rb +1 -1
  169. data/test/rubygems/test_gem_uri_formatter.rb +1 -1
  170. data/test/rubygems/test_gem_util.rb +1 -1
  171. data/test/rubygems/test_gem_validator.rb +1 -1
  172. data/test/rubygems/test_gem_version.rb +1 -1
  173. data/test/rubygems/test_gem_version_option.rb +1 -1
  174. data/test/rubygems/test_kernel.rb +1 -1
  175. data/test/rubygems/test_project_sanity.rb +1 -1
  176. data/test/rubygems/test_remote_fetch_error.rb +1 -1
  177. data/test/rubygems/test_require.rb +1 -1
  178. data/{lib/rubygems/test_utilities.rb → test/rubygems/utilities.rb} +0 -2
  179. metadata +7 -8
  180. data/lib/rubygems/syck_hack.rb +0 -77
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a4e4aacbfe1b4e9161fb46d8c061fbeef0eb1021c6637e728b21411c0bc98027
4
- data.tar.gz: 9b2e7347fce9d278b068fa8f61ae126b884a70b21d2b14b2628fce82c5db8442
3
+ metadata.gz: 6a868e187974e482e1edf68ec0ff267398188892b84efd935be11cb3b841c278
4
+ data.tar.gz: e218469751b1378c58b757575903cb34f85837fcbdba0856b0ac1be9383acdc2
5
5
  SHA512:
6
- metadata.gz: 1dba7bb0f85830a5751e4c35393681a1f724039d0b1f0d7477d89fb7c8d32c3d9e7037dcb9410c1219b282070f2e518328c6220618a8adb86ff6e5783a62e804
7
- data.tar.gz: c35f72c29ee46ad3f8f9d343d480a33b8d5cd7dcb07bbf272722fd9462b1c62a8dde6814e822a309c0e04dfd6c7e0b45d2ad4a35bf758a406782dde7f947fa93
6
+ metadata.gz: 36a8dd7b54b4cff11c91a07c73896df1b502ffa7e2edae1bee6146b91141029938ca19d59492b801cdd129b3a5a3e3c22c9a44ebce3f457e2583b10f9927d2cd
7
+ data.tar.gz: 97f3152994341dcc1004b661beee9599b09a88727969014387acf45124b309db8751d08a562314f52924cd916545e69cd2249339a68079794e2cac379c11d7fb
data/CHANGELOG.md CHANGED
@@ -1,3 +1,20 @@
1
+ # 3.2.25 / 2021-07-30
2
+
3
+ ## Enhancements:
4
+
5
+ * Don't load the `base64` library since it's not used. Pull request #4785
6
+ by deivid-rodriguez
7
+ * Don't load the `resolv` library since it's not used. Pull request #4784
8
+ by deivid-rodriguez
9
+ * Lazily load `shellwords` library. Pull request #4783 by deivid-rodriguez
10
+ * Check requirements class before loading marshalled requirements. Pull
11
+ request #4651 by nobu
12
+
13
+ ## Bug fixes:
14
+
15
+ * Add missing `require 'fileutils'` in `Gem::ConfigFile`. Pull request
16
+ #4768 by ybiquitous
17
+
1
18
  # 3.2.24 / 2021-07-15
2
19
 
3
20
  ## Bug fixes:
data/Manifest.txt CHANGED
@@ -378,7 +378,6 @@ lib/rubygems/install_default_message.rb
378
378
  lib/rubygems/install_message.rb
379
379
  lib/rubygems/install_update_options.rb
380
380
  lib/rubygems/installer.rb
381
- lib/rubygems/installer_test_case.rb
382
381
  lib/rubygems/installer_uninstaller_utils.rb
383
382
  lib/rubygems/local_remote_options.rb
384
383
  lib/rubygems/mock_gem_ui.rb
@@ -393,7 +392,6 @@ lib/rubygems/package/source.rb
393
392
  lib/rubygems/package/tar_header.rb
394
393
  lib/rubygems/package/tar_reader.rb
395
394
  lib/rubygems/package/tar_reader/entry.rb
396
- lib/rubygems/package/tar_test_case.rb
397
395
  lib/rubygems/package/tar_writer.rb
398
396
  lib/rubygems/package_task.rb
399
397
  lib/rubygems/path_support.rb
@@ -485,9 +483,6 @@ lib/rubygems/ssl_certs/.document
485
483
  lib/rubygems/ssl_certs/rubygems.org/GlobalSignRootCA.pem
486
484
  lib/rubygems/ssl_certs/rubygems.org/GlobalSignRootCA_R3.pem
487
485
  lib/rubygems/stub_specification.rb
488
- lib/rubygems/syck_hack.rb
489
- lib/rubygems/test_case.rb
490
- lib/rubygems/test_utilities.rb
491
486
  lib/rubygems/text.rb
492
487
  lib/rubygems/uninstaller.rb
493
488
  lib/rubygems/uri_formatter.rb
@@ -527,6 +522,8 @@ test/rubygems/good_rake.rb
527
522
  test/rubygems/grandchild_cert.pem
528
523
  test/rubygems/grandchild_cert_32.pem
529
524
  test/rubygems/grandchild_key.pem
525
+ test/rubygems/helper.rb
526
+ test/rubygems/installer_test_case.rb
530
527
  test/rubygems/invalid_client.pem
531
528
  test/rubygems/invalid_issuer_cert.pem
532
529
  test/rubygems/invalid_issuer_cert_32.pem
@@ -536,6 +533,7 @@ test/rubygems/invalid_signer_cert_32.pem
536
533
  test/rubygems/invalidchild_cert.pem
537
534
  test/rubygems/invalidchild_cert_32.pem
538
535
  test/rubygems/invalidchild_key.pem
536
+ test/rubygems/package/tar_test_case.rb
539
537
  test/rubygems/packages/ascii_binder-0.1.10.1.gem
540
538
  test/rubygems/packages/ill-formatted-platform-1.0.0.10.gem
541
539
  test/rubygems/plugin/exception/rubygems_plugin.rb
@@ -689,6 +687,7 @@ test/rubygems/test_kernel.rb
689
687
  test/rubygems/test_project_sanity.rb
690
688
  test/rubygems/test_remote_fetch_error.rb
691
689
  test/rubygems/test_require.rb
690
+ test/rubygems/utilities.rb
692
691
  test/rubygems/wrong_key_cert.pem
693
692
  test/rubygems/wrong_key_cert_32.pem
694
693
  test/test_changelog_generator.rb
data/bundler/CHANGELOG.md CHANGED
@@ -1,3 +1,25 @@
1
+ # 2.2.25 (July 30, 2021)
2
+
3
+ ## Deprecations:
4
+
5
+ - Deprecate Gemfile without an explicit global source [#4779](https://github.com/rubygems/rubygems/pull/4779)
6
+ - Deprecate `bundle cache --path` [#4496](https://github.com/rubygems/rubygems/pull/4496)
7
+
8
+ ## Enhancements:
9
+
10
+ - Give better errors when materialization fails [#4788](https://github.com/rubygems/rubygems/pull/4788)
11
+ - Lazily load `shellwords` library [#4786](https://github.com/rubygems/rubygems/pull/4786)
12
+ - Show original error and backtrace directly on `bundle install` errors instead of a more brittle `gem install` hint [#4778](https://github.com/rubygems/rubygems/pull/4778)
13
+ - Remove LoadError message in regards to requiring a relative file [#4772](https://github.com/rubygems/rubygems/pull/4772)
14
+
15
+ ## Bug fixes:
16
+
17
+ - Fix `BUNDLE_USER_CONFIG` no longer respected as config location [#4797](https://github.com/rubygems/rubygems/pull/4797)
18
+ - Fix `--standalone` installation of default gems [#4782](https://github.com/rubygems/rubygems/pull/4782)
19
+ - Fix `--quiet` flag not printing warnings [#4781](https://github.com/rubygems/rubygems/pull/4781)
20
+ - Fix bundler binstub version selection [#4775](https://github.com/rubygems/rubygems/pull/4775)
21
+ - Fix interrupt handling in Bundler workers [#4767](https://github.com/rubygems/rubygems/pull/4767)
22
+
1
23
  # 2.2.24 (July 15, 2021)
2
24
 
3
25
  ## Bug fixes:
@@ -653,10 +653,6 @@ EOF
653
653
  rescue ScriptError, StandardError => e
654
654
  msg = "There was an error while loading `#{path.basename}`: #{e.message}"
655
655
 
656
- if e.is_a?(LoadError)
657
- msg += "\nDoes it try to require a relative path? That's been removed in Ruby 1.9"
658
- end
659
-
660
656
  raise GemspecError, Dsl::DSLError.new(msg, path, e.backtrace, contents)
661
657
  end
662
658
 
@@ -4,8 +4,8 @@ module Bundler
4
4
  # Represents metadata from when the Bundler gem was built.
5
5
  module BuildMetadata
6
6
  # begin ivars
7
- @built_at = "2021-07-15".freeze
8
- @git_commit_sha = "d78b1ee235".freeze
7
+ @built_at = "2021-07-30".freeze
8
+ @git_commit_sha = "7f0f257c7a".freeze
9
9
  @release = true
10
10
  # end ivars
11
11
 
@@ -456,6 +456,12 @@ module Bundler
456
456
  "do in future versions. Instead please use `bundle config set cache_all true`, " \
457
457
  "and stop using this flag" if ARGV.include?("--all")
458
458
 
459
+ SharedHelpers.major_deprecation 2,
460
+ "The `--path` flag is deprecated because its semantics are unclear. " \
461
+ "Use `bundle config cache_path` to configure the path of your cache of gems, " \
462
+ "and `bundle config path` to configure the path where your gems are installed, " \
463
+ "and stop using this flag" if ARGV.include?("--path")
464
+
459
465
  require_relative "cli/cache"
460
466
  Cache.new(options).run
461
467
  end
@@ -9,7 +9,7 @@ module Bundler
9
9
  end
10
10
 
11
11
  def run
12
- Bundler.ui.level = "error" if options[:quiet]
12
+ Bundler.ui.level = "warn" if options[:quiet]
13
13
  Bundler.settings.set_command_option_if_given :path, options[:path]
14
14
  Bundler.settings.set_command_option_if_given :cache_path, options["cache-path"]
15
15
 
@@ -61,7 +61,7 @@ module Bundler
61
61
  end
62
62
 
63
63
  def run
64
- Bundler.ui.level = "error" if options[:quiet]
64
+ Bundler.ui.level = "warn" if options[:quiet]
65
65
  Bundler.settings.validate!
66
66
  check!
67
67
 
@@ -8,7 +8,7 @@ module Bundler
8
8
  end
9
9
 
10
10
  def run
11
- Bundler.ui.level = "error" if options[:quiet]
11
+ Bundler.ui.level = "warn" if options[:quiet]
12
12
 
13
13
  warn_if_root
14
14
 
@@ -60,7 +60,7 @@ module Bundler
60
60
  installer = Installer.install(Bundler.root, definition, options)
61
61
 
62
62
  Bundler.settings.temporary(:cache_all_platforms => options[:local] ? false : Bundler.settings[:cache_all_platforms]) do
63
- Bundler.load.cache if Bundler.app_cache.exist? && !options["no-cache"] && !Bundler.frozen_bundle?
63
+ Bundler.load.cache(nil, options[:local]) if Bundler.app_cache.exist? && !options["no-cache"] && !Bundler.frozen_bundle?
64
64
  end
65
65
 
66
66
  Bundler.ui.confirm "Bundle complete! #{dependencies_count_for(definition)}, #{gems_installed_for(definition)}."
@@ -83,22 +83,9 @@ module Bundler
83
83
  end
84
84
 
85
85
  Bundler::CLI::Common.output_fund_metadata_summary
86
- rescue GemNotFound, VersionConflict => e
87
- if options[:local] && Bundler.app_cache.exist?
88
- Bundler.ui.warn "Some gems seem to be missing from your #{Bundler.settings.app_cache_path} directory."
89
- end
90
-
91
- unless Bundler.definition.has_rubygems_remotes?
92
- Bundler.ui.warn <<-WARN, :wrap => true
93
- Your Gemfile has no gem server sources. If you need gems that are \
94
- not already on your machine, add a line like this to your Gemfile:
95
- source 'https://rubygems.org'
96
- WARN
97
- end
98
- raise e
99
- rescue Gem::InvalidSpecificationException => e
86
+ rescue Gem::InvalidSpecificationException
100
87
  Bundler.ui.warn "You have one or more invalid gemspecs that need to be fixed."
101
- raise e
88
+ raise
102
89
  end
103
90
 
104
91
  private
@@ -16,7 +16,13 @@ module Bundler
16
16
  specs = if @only_group.any? || @without_group.any?
17
17
  filtered_specs_by_groups
18
18
  else
19
- Bundler.load.specs
19
+ begin
20
+ Bundler.load.specs
21
+ rescue GemNotFound => e
22
+ Bundler.ui.error e.message
23
+ Bundler.ui.warn "Install missing gems with `bundle install`."
24
+ exit 1
25
+ end
20
26
  end.reject {|s| s.name == "bundler" }.sort_by(&:name)
21
27
 
22
28
  return Bundler.ui.info "No gems in the Gemfile" if specs.empty?
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "shellwords"
4
-
5
3
  module Bundler
6
4
  class CLI::Open
7
5
  attr_reader :options, :name
@@ -19,6 +17,7 @@ module Bundler
19
17
  else
20
18
  path = spec.full_gem_path
21
19
  Dir.chdir(path) do
20
+ require "shellwords"
22
21
  command = Shellwords.split(editor) + [path]
23
22
  Bundler.with_original_env do
24
23
  system(*command)
@@ -9,7 +9,7 @@ module Bundler
9
9
  end
10
10
 
11
11
  def run
12
- Bundler.ui.level = "error" if options[:quiet]
12
+ Bundler.ui.level = "warn" if options[:quiet]
13
13
 
14
14
  Plugin.gemfile_install(Bundler.default_gemfile) if Bundler.feature_flag.plugins?
15
15
 
@@ -133,7 +133,7 @@ module Bundler
133
133
  @unlock[:gems] ||= @dependencies.map(&:name)
134
134
  else
135
135
  eager_unlock = expand_dependencies(@unlock[:gems] || [], true)
136
- @unlock[:gems] = @locked_specs.for(eager_unlock, false, false, false).map(&:name)
136
+ @unlock[:gems] = @locked_specs.for(eager_unlock, false, false).map(&:name)
137
137
  end
138
138
 
139
139
  @dependency_changes = converge_dependencies
@@ -185,15 +185,7 @@ module Bundler
185
185
  #
186
186
  # @return [Bundler::SpecSet]
187
187
  def specs
188
- @specs ||= add_bundler_to(resolve.materialize(requested_dependencies))
189
- rescue GemNotFound => e # Handle yanked gem
190
- gem_name, gem_version = extract_gem_info(e)
191
- locked_gem = @locked_specs[gem_name].last
192
- raise if locked_gem.nil? || locked_gem.version.to_s != gem_version || !@remote
193
- raise GemNotFound, "Your bundle is locked to #{locked_gem} from #{locked_gem.source}, but that version can " \
194
- "no longer be found in that source. That means the author of #{locked_gem} has removed it. " \
195
- "You'll need to update your bundle to a version other than #{locked_gem} that hasn't been " \
196
- "removed in order to install."
188
+ @specs ||= materialize(requested_dependencies)
197
189
  end
198
190
 
199
191
  def new_specs
@@ -205,9 +197,7 @@ module Bundler
205
197
  end
206
198
 
207
199
  def missing_specs
208
- missing = []
209
- resolve.materialize(requested_dependencies, missing)
210
- missing
200
+ resolve.materialize(requested_dependencies).missing_specs
211
201
  end
212
202
 
213
203
  def missing_specs?
@@ -241,7 +231,7 @@ module Bundler
241
231
  def specs_for(groups)
242
232
  groups = requested_groups if groups.empty?
243
233
  deps = dependencies_for(groups)
244
- add_bundler_to(resolve.materialize(expand_dependencies(deps)))
234
+ materialize(expand_dependencies(deps))
245
235
  end
246
236
 
247
237
  def dependencies_for(groups)
@@ -274,10 +264,6 @@ module Bundler
274
264
  end
275
265
  end
276
266
 
277
- def has_rubygems_remotes?
278
- sources.rubygems_sources.any? {|s| s.remotes.any? }
279
- end
280
-
281
267
  def spec_git_paths
282
268
  sources.git_sources.map {|s| File.realpath(s.path) if File.exist?(s.path) }.compact
283
269
  end
@@ -493,7 +479,23 @@ module Bundler
493
479
 
494
480
  private
495
481
 
496
- def add_bundler_to(specs)
482
+ def materialize(dependencies)
483
+ specs = resolve.materialize(dependencies)
484
+ missing_specs = specs.missing_specs
485
+
486
+ if missing_specs.any?
487
+ missing_specs.each do |s|
488
+ locked_gem = @locked_specs[s.name].last
489
+ next if locked_gem.nil? || locked_gem.version != s.version || !@remote
490
+ raise GemNotFound, "Your bundle is locked to #{locked_gem} from #{locked_gem.source}, but that version can " \
491
+ "no longer be found in that source. That means the author of #{locked_gem} has removed it. " \
492
+ "You'll need to update your bundle to a version other than #{locked_gem} that hasn't been " \
493
+ "removed in order to install."
494
+ end
495
+
496
+ raise GemNotFound, "Could not find #{missing_specs.map(&:full_name).join(", ")} in any of the sources"
497
+ end
498
+
497
499
  unless specs["bundler"].any?
498
500
  bundler = sources.metadata_source.specs.search(Gem::Dependency.new("bundler", VERSION)).last
499
501
  specs["bundler"] = bundler
@@ -712,7 +714,7 @@ module Bundler
712
714
  @locked_specs.each do |s|
713
715
  # Replace the locked dependency's source with the equivalent source from the Gemfile
714
716
  dep = @dependencies.find {|d| s.satisfies?(d) }
715
- s.source = (dep && dep.source) || sources.get(s.source)
717
+ s.source = (dep && dep.source) || sources.get(s.source) unless multisource_allowed?
716
718
 
717
719
  # Don't add a spec to the list if its source is expired. For example,
718
720
  # if you change a Git gem to RubyGems.
@@ -730,7 +732,7 @@ module Bundler
730
732
  # if we won't need the source (according to the lockfile),
731
733
  # don't error if the path/git source isn't available
732
734
  next if @locked_specs.
733
- for(requested_dependencies, false, true, false).
735
+ for(requested_dependencies, false, true).
734
736
  none? {|locked_spec| locked_spec.source == s.source }
735
737
 
736
738
  raise
@@ -750,7 +752,7 @@ module Bundler
750
752
 
751
753
  resolve = SpecSet.new(converged)
752
754
  @locked_specs_incomplete_for_platform = !resolve.for(expand_dependencies(requested_dependencies & deps), true, true)
753
- resolve = SpecSet.new(resolve.for(expand_dependencies(deps, true), false, false, false).reject{|s| @unlock[:gems].include?(s.name) })
755
+ resolve = SpecSet.new(resolve.for(expand_dependencies(deps, true), false, false).reject{|s| @unlock[:gems].include?(s.name) })
754
756
  diff = nil
755
757
 
756
758
  # Now, we unlock any sources that do not have anymore gems pinned to it
@@ -854,12 +856,6 @@ module Bundler
854
856
  current == proposed
855
857
  end
856
858
 
857
- def extract_gem_info(error)
858
- # This method will extract the error message like "Could not find foo-1.2.3 in any of the sources"
859
- # to an array. The first element will be the gem name (e.g. foo), the second will be the version number.
860
- error.message.scan(/Could not find (\w+)-(\d+(?:\.\d+)+)/).flatten
861
- end
862
-
863
859
  def compute_requires
864
860
  dependencies.reduce({}) do |requires, dep|
865
861
  next requires unless dep.should_include?
@@ -447,8 +447,21 @@ repo_name ||= user_name
447
447
  end
448
448
 
449
449
  def check_rubygems_source_safety
450
- return unless @sources.aggregate_global_source?
450
+ if @sources.implicit_global_source?
451
+ implicit_global_source_warning
452
+ elsif @sources.aggregate_global_source?
453
+ multiple_global_source_warning
454
+ end
455
+ end
456
+
457
+ def implicit_global_source_warning
458
+ Bundler::SharedHelpers.major_deprecation 2, "This Gemfile does not include an explicit global source. " \
459
+ "Not using an explicit global source may result in a different lockfile being generated depending on " \
460
+ "the gems you have installed locally before bundler is run." \
461
+ "Instead, define a global source in your Gemfile like this: source \"https://rubygems.org\"."
462
+ end
451
463
 
464
+ def multiple_global_source_warning
452
465
  if Bundler.feature_flag.bundler_3_mode?
453
466
  msg = "This Gemfile contains multiple primary sources. " \
454
467
  "Each source after the first must include a block to indicate which gems " \
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "shellwords"
4
-
5
3
  module Bundler
6
4
  class GemInstaller
7
5
  attr_reader :spec, :standalone, :worker, :force, :installer
@@ -31,34 +29,23 @@ module Bundler
31
29
 
32
30
  def specific_failure_message(e)
33
31
  message = "#{e.class}: #{e.message}\n"
34
- message += " " + e.backtrace.join("\n ") + "\n\n" if Bundler.ui.debug?
32
+ message += " " + e.backtrace.join("\n ") + "\n\n"
35
33
  message = message.lines.first + Bundler.ui.add_color(message.lines.drop(1).join, :clear)
36
34
  message + Bundler.ui.add_color(failure_message, :red)
37
35
  end
38
36
 
39
37
  def failure_message
40
- return install_error_message if spec.source.options["git"]
41
- "#{install_error_message}\n#{gem_install_message}"
38
+ install_error_message
42
39
  end
43
40
 
44
41
  def install_error_message
45
42
  "An error occurred while installing #{spec.name} (#{spec.version}), and Bundler cannot continue."
46
43
  end
47
44
 
48
- def gem_install_message
49
- source = spec.source
50
- return unless source.respond_to?(:remotes)
51
-
52
- if source.remotes.size == 1
53
- "Make sure that `gem install #{spec.name} -v '#{spec.version}' --source '#{source.remotes.first}'` succeeds before bundling."
54
- else
55
- "Make sure that `gem install #{spec.name} -v '#{spec.version}'` succeeds before bundling."
56
- end
57
- end
58
-
59
45
  def spec_settings
60
46
  # Fetch the build settings, if there are any
61
47
  if settings = Bundler.settings["build.#{spec.name}"]
48
+ require "shellwords"
62
49
  Shellwords.shellsplit(settings)
63
50
  end
64
51
  end
@@ -195,6 +195,7 @@ module Bundler
195
195
  platform = platform ? Gem::Platform.new(platform) : Gem::Platform::RUBY
196
196
  @current_spec = LazySpecification.new(name, version, platform)
197
197
  @current_spec.source = @current_source
198
+ @current_source.add_dependency_names(name)
198
199
 
199
200
  @specs[@current_spec.identifier] = @current_spec
200
201
  elsif spaces.size == 6