rubygems-update 3.2.24 → 3.2.25

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