rubygems-update 3.2.24 → 3.2.28

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 (276) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +57 -0
  3. data/Manifest.txt +7 -7
  4. data/bundler/CHANGELOG.md +62 -0
  5. data/bundler/lib/bundler/build_metadata.rb +2 -2
  6. data/bundler/lib/bundler/cli/cache.rb +1 -1
  7. data/bundler/lib/bundler/cli/doctor.rb +1 -1
  8. data/bundler/lib/bundler/cli/exec.rb +1 -6
  9. data/bundler/lib/bundler/cli/gem.rb +3 -2
  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/remove.rb +1 -2
  14. data/bundler/lib/bundler/cli/update.rb +1 -1
  15. data/bundler/lib/bundler/cli.rb +12 -9
  16. data/bundler/lib/bundler/definition.rb +25 -29
  17. data/bundler/lib/bundler/dsl.rb +14 -1
  18. data/bundler/lib/bundler/errors.rb +1 -1
  19. data/bundler/lib/bundler/installer/gem_installer.rb +3 -16
  20. data/bundler/lib/bundler/installer/standalone.rb +13 -8
  21. data/bundler/lib/bundler/installer.rb +0 -1
  22. data/bundler/lib/bundler/lockfile_parser.rb +1 -0
  23. data/bundler/lib/bundler/plugin/installer.rb +2 -0
  24. data/bundler/lib/bundler/plugin.rb +23 -6
  25. data/bundler/lib/bundler/resolver.rb +10 -17
  26. data/bundler/lib/bundler/rubygems_gem_installer.rb +5 -1
  27. data/bundler/lib/bundler/rubygems_integration.rb +2 -0
  28. data/bundler/lib/bundler/runtime.rb +15 -6
  29. data/bundler/lib/bundler/settings.rb +13 -1
  30. data/bundler/lib/bundler/setup.rb +2 -2
  31. data/bundler/lib/bundler/shared_helpers.rb +0 -7
  32. data/bundler/lib/bundler/source/git/git_proxy.rb +1 -2
  33. data/bundler/lib/bundler/source/rubygems.rb +23 -2
  34. data/bundler/lib/bundler/source/rubygems_aggregate.rb +4 -0
  35. data/bundler/lib/bundler/source.rb +4 -0
  36. data/bundler/lib/bundler/source_list.rb +16 -3
  37. data/bundler/lib/bundler/spec_set.rb +13 -35
  38. data/bundler/lib/bundler/templates/Executable.bundler +6 -6
  39. data/bundler/lib/bundler/templates/newgem/github/workflows/main.yml.tt +13 -2
  40. data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +4 -2
  41. data/bundler/lib/bundler/version.rb +1 -1
  42. data/bundler/lib/bundler/worker.rb +17 -2
  43. data/bundler/lib/bundler.rb +11 -21
  44. data/lib/rubygems/command_manager.rb +3 -3
  45. data/lib/rubygems/commands/build_command.rb +3 -3
  46. data/lib/rubygems/commands/cert_command.rb +2 -2
  47. data/lib/rubygems/commands/check_command.rb +4 -4
  48. data/lib/rubygems/commands/cleanup_command.rb +3 -3
  49. data/lib/rubygems/commands/contents_command.rb +2 -2
  50. data/lib/rubygems/commands/dependency_command.rb +3 -3
  51. data/lib/rubygems/commands/environment_command.rb +1 -1
  52. data/lib/rubygems/commands/fetch_command.rb +3 -3
  53. data/lib/rubygems/commands/generate_index_command.rb +2 -2
  54. data/lib/rubygems/commands/help_command.rb +1 -1
  55. data/lib/rubygems/commands/info_command.rb +2 -2
  56. data/lib/rubygems/commands/install_command.rb +12 -11
  57. data/lib/rubygems/commands/list_command.rb +2 -2
  58. data/lib/rubygems/commands/lock_command.rb +1 -1
  59. data/lib/rubygems/commands/mirror_command.rb +1 -1
  60. data/lib/rubygems/commands/open_command.rb +2 -2
  61. data/lib/rubygems/commands/outdated_command.rb +4 -4
  62. data/lib/rubygems/commands/owner_command.rb +4 -4
  63. data/lib/rubygems/commands/pristine_command.rb +5 -5
  64. data/lib/rubygems/commands/push_command.rb +4 -4
  65. data/lib/rubygems/commands/query_command.rb +3 -3
  66. data/lib/rubygems/commands/rdoc_command.rb +3 -3
  67. data/lib/rubygems/commands/search_command.rb +2 -2
  68. data/lib/rubygems/commands/server_command.rb +3 -3
  69. data/lib/rubygems/commands/setup_command.rb +5 -5
  70. data/lib/rubygems/commands/signin_command.rb +2 -2
  71. data/lib/rubygems/commands/signout_command.rb +1 -1
  72. data/lib/rubygems/commands/sources_command.rb +4 -4
  73. data/lib/rubygems/commands/specification_command.rb +4 -4
  74. data/lib/rubygems/commands/stale_command.rb +1 -1
  75. data/lib/rubygems/commands/uninstall_command.rb +3 -3
  76. data/lib/rubygems/commands/unpack_command.rb +5 -5
  77. data/lib/rubygems/commands/update_command.rb +9 -9
  78. data/lib/rubygems/commands/which_command.rb +1 -1
  79. data/lib/rubygems/commands/yank_command.rb +4 -4
  80. data/lib/rubygems/config_file.rb +5 -5
  81. data/lib/rubygems/dependency_installer.rb +8 -8
  82. data/lib/rubygems/dependency_list.rb +1 -1
  83. data/lib/rubygems/doctor.rb +2 -2
  84. data/lib/rubygems/exceptions.rb +1 -1
  85. data/lib/rubygems/ext/builder.rb +1 -0
  86. data/lib/rubygems/ext/ext_conf_builder.rb +1 -2
  87. data/lib/rubygems/ext/rake_builder.rb +1 -2
  88. data/lib/rubygems/gem_runner.rb +3 -3
  89. data/lib/rubygems/gemcutter_utilities.rb +2 -2
  90. data/lib/rubygems/indexer.rb +2 -2
  91. data/lib/rubygems/install_default_message.rb +2 -2
  92. data/lib/rubygems/install_message.rb +2 -2
  93. data/lib/rubygems/install_update_options.rb +2 -2
  94. data/lib/rubygems/installer.rb +17 -8
  95. data/lib/rubygems/local_remote_options.rb +1 -1
  96. data/lib/rubygems/mock_gem_ui.rb +1 -1
  97. data/lib/rubygems/package/tar_reader.rb +1 -1
  98. data/lib/rubygems/package.rb +12 -12
  99. data/lib/rubygems/package_task.rb +2 -2
  100. data/lib/rubygems/platform.rb +2 -1
  101. data/lib/rubygems/rdoc.rb +1 -1
  102. data/lib/rubygems/remote_fetcher.rb +14 -21
  103. data/lib/rubygems/request.rb +5 -5
  104. data/lib/rubygems/request_set/lockfile/tokenizer.rb +1 -1
  105. data/lib/rubygems/request_set/lockfile.rb +1 -1
  106. data/lib/rubygems/request_set.rb +4 -4
  107. data/lib/rubygems/requirement.rb +3 -22
  108. data/lib/rubygems/resolver/git_specification.rb +1 -1
  109. data/lib/rubygems/resolver/installer_set.rb +3 -3
  110. data/lib/rubygems/resolver/molinillo.rb +1 -1
  111. data/lib/rubygems/resolver/set.rb +0 -1
  112. data/lib/rubygems/resolver/specification.rb +1 -1
  113. data/lib/rubygems/resolver.rb +31 -31
  114. data/lib/rubygems/s3_uri_signer.rb +0 -1
  115. data/lib/rubygems/safe_yaml.rb +0 -2
  116. data/lib/rubygems/security/policy.rb +1 -1
  117. data/lib/rubygems/security/signer.rb +1 -1
  118. data/lib/rubygems/security.rb +5 -5
  119. data/lib/rubygems/security_option.rb +2 -2
  120. data/lib/rubygems/server.rb +2 -2
  121. data/lib/rubygems/source.rb +6 -6
  122. data/lib/rubygems/spec_fetcher.rb +5 -5
  123. data/lib/rubygems/specification.rb +9 -15
  124. data/lib/rubygems/specification_policy.rb +2 -2
  125. data/lib/rubygems/uninstaller.rb +6 -6
  126. data/lib/rubygems/uri.rb +111 -0
  127. data/lib/rubygems/user_interaction.rb +2 -2
  128. data/lib/rubygems/util/licenses.rb +1 -1
  129. data/lib/rubygems/validator.rb +2 -2
  130. data/lib/rubygems/version_option.rb +1 -1
  131. data/lib/rubygems.rb +37 -47
  132. data/rubygems-update.gemspec +1 -1
  133. data/test/rubygems/data/null-type.gemspec.rz +0 -0
  134. data/{lib/rubygems/test_case.rb → test/rubygems/helper.rb} +16 -19
  135. data/{lib → test}/rubygems/installer_test_case.rb +1 -1
  136. data/{lib → test}/rubygems/package/tar_test_case.rb +1 -1
  137. data/test/rubygems/test_bundled_ca.rb +1 -1
  138. data/test/rubygems/test_config.rb +1 -1
  139. data/test/rubygems/test_deprecate.rb +1 -1
  140. data/test/rubygems/test_gem.rb +190 -136
  141. data/test/rubygems/test_gem_available_set.rb +1 -1
  142. data/test/rubygems/test_gem_bundler_version_finder.rb +1 -1
  143. data/test/rubygems/test_gem_command.rb +1 -1
  144. data/test/rubygems/test_gem_command_manager.rb +1 -1
  145. data/test/rubygems/test_gem_commands_build_command.rb +1 -1
  146. data/test/rubygems/test_gem_commands_cert_command.rb +1 -1
  147. data/test/rubygems/test_gem_commands_check_command.rb +1 -1
  148. data/test/rubygems/test_gem_commands_cleanup_command.rb +1 -1
  149. data/test/rubygems/test_gem_commands_contents_command.rb +1 -1
  150. data/test/rubygems/test_gem_commands_dependency_command.rb +1 -1
  151. data/test/rubygems/test_gem_commands_environment_command.rb +1 -1
  152. data/test/rubygems/test_gem_commands_fetch_command.rb +1 -1
  153. data/test/rubygems/test_gem_commands_generate_index_command.rb +1 -1
  154. data/test/rubygems/test_gem_commands_help_command.rb +1 -1
  155. data/test/rubygems/test_gem_commands_info_command.rb +1 -1
  156. data/test/rubygems/test_gem_commands_install_command.rb +26 -1
  157. data/test/rubygems/test_gem_commands_list_command.rb +1 -1
  158. data/test/rubygems/test_gem_commands_lock_command.rb +1 -1
  159. data/test/rubygems/test_gem_commands_mirror.rb +1 -1
  160. data/test/rubygems/test_gem_commands_open_command.rb +1 -1
  161. data/test/rubygems/test_gem_commands_outdated_command.rb +1 -1
  162. data/test/rubygems/test_gem_commands_owner_command.rb +1 -1
  163. data/test/rubygems/test_gem_commands_pristine_command.rb +1 -1
  164. data/test/rubygems/test_gem_commands_push_command.rb +1 -1
  165. data/test/rubygems/test_gem_commands_query_command.rb +1 -1
  166. data/test/rubygems/test_gem_commands_search_command.rb +1 -1
  167. data/test/rubygems/test_gem_commands_server_command.rb +1 -1
  168. data/test/rubygems/test_gem_commands_setup_command.rb +3 -3
  169. data/test/rubygems/test_gem_commands_signin_command.rb +1 -1
  170. data/test/rubygems/test_gem_commands_signout_command.rb +1 -1
  171. data/test/rubygems/test_gem_commands_sources_command.rb +1 -1
  172. data/test/rubygems/test_gem_commands_specification_command.rb +1 -1
  173. data/test/rubygems/test_gem_commands_stale_command.rb +1 -1
  174. data/test/rubygems/test_gem_commands_uninstall_command.rb +1 -1
  175. data/test/rubygems/test_gem_commands_unpack_command.rb +1 -1
  176. data/test/rubygems/test_gem_commands_update_command.rb +1 -1
  177. data/test/rubygems/test_gem_commands_which_command.rb +1 -1
  178. data/test/rubygems/test_gem_commands_yank_command.rb +1 -1
  179. data/test/rubygems/test_gem_config_file.rb +1 -1
  180. data/test/rubygems/test_gem_dependency.rb +1 -1
  181. data/test/rubygems/test_gem_dependency_installer.rb +1 -1
  182. data/test/rubygems/test_gem_dependency_list.rb +1 -1
  183. data/test/rubygems/test_gem_dependency_resolution_error.rb +1 -1
  184. data/test/rubygems/test_gem_doctor.rb +1 -1
  185. data/test/rubygems/test_gem_ext_builder.rb +4 -1
  186. data/test/rubygems/test_gem_ext_cmake_builder.rb +1 -1
  187. data/test/rubygems/test_gem_ext_configure_builder.rb +1 -1
  188. data/test/rubygems/test_gem_ext_ext_conf_builder.rb +1 -1
  189. data/test/rubygems/test_gem_ext_rake_builder.rb +1 -1
  190. data/test/rubygems/test_gem_gem_runner.rb +1 -1
  191. data/test/rubygems/test_gem_gemcutter_utilities.rb +1 -1
  192. data/test/rubygems/test_gem_impossible_dependencies_error.rb +1 -1
  193. data/test/rubygems/test_gem_indexer.rb +1 -1
  194. data/test/rubygems/test_gem_install_update_options.rb +1 -1
  195. data/test/rubygems/test_gem_installer.rb +4 -2
  196. data/test/rubygems/test_gem_local_remote_options.rb +1 -1
  197. data/test/rubygems/test_gem_name_tuple.rb +1 -1
  198. data/test/rubygems/test_gem_package.rb +1 -1
  199. data/test/rubygems/test_gem_package_old.rb +1 -1
  200. data/test/rubygems/test_gem_package_tar_header.rb +1 -1
  201. data/test/rubygems/test_gem_package_tar_reader.rb +1 -1
  202. data/test/rubygems/test_gem_package_tar_reader_entry.rb +1 -1
  203. data/test/rubygems/test_gem_package_tar_writer.rb +1 -1
  204. data/test/rubygems/test_gem_package_task.rb +1 -1
  205. data/test/rubygems/test_gem_path_support.rb +1 -1
  206. data/test/rubygems/test_gem_platform.rb +2 -1
  207. data/test/rubygems/test_gem_rdoc.rb +1 -1
  208. data/test/rubygems/test_gem_remote_fetcher.rb +31 -1
  209. data/test/rubygems/test_gem_request.rb +36 -10
  210. data/test/rubygems/test_gem_request_connection_pools.rb +1 -1
  211. data/test/rubygems/test_gem_request_set.rb +1 -1
  212. data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +1 -1
  213. data/test/rubygems/test_gem_request_set_lockfile.rb +1 -1
  214. data/test/rubygems/test_gem_request_set_lockfile_parser.rb +1 -1
  215. data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +1 -1
  216. data/test/rubygems/test_gem_requirement.rb +35 -1
  217. data/test/rubygems/test_gem_resolver.rb +1 -1
  218. data/test/rubygems/test_gem_resolver_activation_request.rb +1 -1
  219. data/test/rubygems/test_gem_resolver_api_set.rb +1 -1
  220. data/test/rubygems/test_gem_resolver_api_specification.rb +1 -1
  221. data/test/rubygems/test_gem_resolver_best_set.rb +1 -1
  222. data/test/rubygems/test_gem_resolver_composed_set.rb +1 -1
  223. data/test/rubygems/test_gem_resolver_conflict.rb +1 -1
  224. data/test/rubygems/test_gem_resolver_dependency_request.rb +1 -1
  225. data/test/rubygems/test_gem_resolver_git_set.rb +1 -1
  226. data/test/rubygems/test_gem_resolver_git_specification.rb +2 -1
  227. data/test/rubygems/test_gem_resolver_index_set.rb +1 -1
  228. data/test/rubygems/test_gem_resolver_index_specification.rb +1 -1
  229. data/test/rubygems/test_gem_resolver_installed_specification.rb +1 -1
  230. data/test/rubygems/test_gem_resolver_installer_set.rb +19 -1
  231. data/test/rubygems/test_gem_resolver_local_specification.rb +1 -1
  232. data/test/rubygems/test_gem_resolver_lock_set.rb +1 -1
  233. data/test/rubygems/test_gem_resolver_lock_specification.rb +1 -1
  234. data/test/rubygems/test_gem_resolver_requirement_list.rb +1 -1
  235. data/test/rubygems/test_gem_resolver_specification.rb +1 -1
  236. data/test/rubygems/test_gem_resolver_vendor_set.rb +1 -1
  237. data/test/rubygems/test_gem_resolver_vendor_specification.rb +1 -1
  238. data/test/rubygems/test_gem_security.rb +1 -1
  239. data/test/rubygems/test_gem_security_policy.rb +1 -1
  240. data/test/rubygems/test_gem_security_signer.rb +1 -1
  241. data/test/rubygems/test_gem_security_trust_dir.rb +1 -1
  242. data/test/rubygems/test_gem_server.rb +1 -1
  243. data/test/rubygems/test_gem_silent_ui.rb +1 -1
  244. data/test/rubygems/test_gem_source.rb +1 -1
  245. data/test/rubygems/test_gem_source_fetch_problem.rb +1 -1
  246. data/test/rubygems/test_gem_source_git.rb +1 -1
  247. data/test/rubygems/test_gem_source_installed.rb +1 -1
  248. data/test/rubygems/test_gem_source_list.rb +1 -1
  249. data/test/rubygems/test_gem_source_local.rb +1 -1
  250. data/test/rubygems/test_gem_source_lock.rb +1 -1
  251. data/test/rubygems/test_gem_source_specific_file.rb +1 -1
  252. data/test/rubygems/test_gem_source_subpath_problem.rb +1 -1
  253. data/test/rubygems/test_gem_source_vendor.rb +1 -1
  254. data/test/rubygems/test_gem_spec_fetcher.rb +1 -1
  255. data/test/rubygems/test_gem_specification.rb +15 -165
  256. data/test/rubygems/test_gem_stream_ui.rb +1 -1
  257. data/test/rubygems/test_gem_stub_specification.rb +1 -1
  258. data/test/rubygems/test_gem_text.rb +1 -1
  259. data/test/rubygems/test_gem_uninstaller.rb +1 -1
  260. data/test/rubygems/test_gem_unsatisfiable_dependency_error.rb +1 -1
  261. data/test/rubygems/test_gem_uri.rb +39 -0
  262. data/test/rubygems/test_gem_uri_formatter.rb +1 -1
  263. data/test/rubygems/test_gem_util.rb +1 -1
  264. data/test/rubygems/test_gem_validator.rb +1 -1
  265. data/test/rubygems/test_gem_version.rb +1 -1
  266. data/test/rubygems/test_gem_version_option.rb +1 -1
  267. data/test/rubygems/test_kernel.rb +1 -1
  268. data/test/rubygems/test_project_sanity.rb +1 -1
  269. data/test/rubygems/test_remote_fetch_error.rb +1 -1
  270. data/test/rubygems/test_require.rb +1 -1
  271. data/test/rubygems/test_rubygems.rb +44 -0
  272. data/{lib/rubygems/test_utilities.rb → test/rubygems/utilities.rb} +0 -2
  273. metadata +10 -10
  274. data/lib/rubygems/syck_hack.rb +0 -77
  275. data/lib/rubygems/uri_parser.rb +0 -34
  276. data/lib/rubygems/uri_parsing.rb +0 -23
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a4e4aacbfe1b4e9161fb46d8c061fbeef0eb1021c6637e728b21411c0bc98027
4
- data.tar.gz: 9b2e7347fce9d278b068fa8f61ae126b884a70b21d2b14b2628fce82c5db8442
3
+ metadata.gz: ef3b3d5da1e7cb11b95714c00fa4e0b0026112870503550c694d5c502dab5339
4
+ data.tar.gz: 7ec21881232ed07b1061a4570f5af5e80246f74cd20e8a27592f45c609c70f8d
5
5
  SHA512:
6
- metadata.gz: 1dba7bb0f85830a5751e4c35393681a1f724039d0b1f0d7477d89fb7c8d32c3d9e7037dcb9410c1219b282070f2e518328c6220618a8adb86ff6e5783a62e804
7
- data.tar.gz: c35f72c29ee46ad3f8f9d343d480a33b8d5cd7dcb07bbf272722fd9462b1c62a8dde6814e822a309c0e04dfd6c7e0b45d2ad4a35bf758a406782dde7f947fa93
6
+ metadata.gz: 4806038e2893fd4957e02b09f6ed6289ec5759142c8ba3329500b5423aa4d1e6dddeb3f2f218667bfd17791b886f0a7d436b465795368217d9ee7e94d0e4479f
7
+ data.tar.gz: 680548baf911d819513df953d56005d4bf59f903d5a37dc0fb24eb057f5e0cf7bcf77cad9821efb9962f95c13353f0858538ddc1ebc5844f31f8237d83e48c4b
data/CHANGELOG.md CHANGED
@@ -1,3 +1,60 @@
1
+ # 3.2.28 / 2021-09-23
2
+
3
+ ## Enhancements:
4
+
5
+ * Support MINGW-UCRT. Pull request #4925 by hsbt
6
+ * Only check if descriptions *start with* FIXME/TODO. Pull request #4841
7
+ by duckinator
8
+ * Avoid loading `uri` unnecessarily when activating gems. Pull request
9
+ #4897 by deivid-rodriguez
10
+
11
+ ## Bug fixes:
12
+
13
+ * Fix redacted credentials being sent to gemserver. Pull request #4919 by
14
+ jdliss
15
+
16
+ # 3.2.27 / 2021-09-03
17
+
18
+ ## Enhancements:
19
+
20
+ * Redact credentails when printing URI. Pull request #4868 by intuxicated
21
+ * Prefer `require_relative` to `require` for internal requires. Pull
22
+ request #4858 by deivid-rodriguez
23
+ * Prioritise gems with higher version for fetching metadata, and stop
24
+ fetching once we find a valid candidate. Pull request #4843 by intuxicated
25
+
26
+ # 3.2.26 / 2021-08-17
27
+
28
+ ## Enhancements:
29
+
30
+ * Enhance the error handling for loading the
31
+ `rubygems/defaults/operating_system` file. Pull request #4824 by
32
+ intuxicated
33
+ * Ignore `RUBYGEMS_GEMDEPS` for the bundler gem. Pull request #4532 by
34
+ deivid-rodriguez
35
+
36
+ ## Bug fixes:
37
+
38
+ * Also load user installed rubygems plugins. Pull request #4829 by
39
+ deivid-rodriguez
40
+
41
+ # 3.2.25 / 2021-07-30
42
+
43
+ ## Enhancements:
44
+
45
+ * Don't load the `base64` library since it's not used. Pull request #4785
46
+ by deivid-rodriguez
47
+ * Don't load the `resolv` library since it's not used. Pull request #4784
48
+ by deivid-rodriguez
49
+ * Lazily load `shellwords` library. Pull request #4783 by deivid-rodriguez
50
+ * Check requirements class before loading marshalled requirements. Pull
51
+ request #4651 by nobu
52
+
53
+ ## Bug fixes:
54
+
55
+ * Add missing `require 'fileutils'` in `Gem::ConfigFile`. Pull request
56
+ #4768 by ybiquitous
57
+
1
58
  # 3.2.24 / 2021-07-15
2
59
 
3
60
  ## 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,14 +483,10 @@ 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
488
+ lib/rubygems/uri.rb
493
489
  lib/rubygems/uri_formatter.rb
494
- lib/rubygems/uri_parser.rb
495
- lib/rubygems/uri_parsing.rb
496
490
  lib/rubygems/user_interaction.rb
497
491
  lib/rubygems/util.rb
498
492
  lib/rubygems/util/licenses.rb
@@ -527,6 +521,8 @@ test/rubygems/good_rake.rb
527
521
  test/rubygems/grandchild_cert.pem
528
522
  test/rubygems/grandchild_cert_32.pem
529
523
  test/rubygems/grandchild_key.pem
524
+ test/rubygems/helper.rb
525
+ test/rubygems/installer_test_case.rb
530
526
  test/rubygems/invalid_client.pem
531
527
  test/rubygems/invalid_issuer_cert.pem
532
528
  test/rubygems/invalid_issuer_cert_32.pem
@@ -536,6 +532,7 @@ test/rubygems/invalid_signer_cert_32.pem
536
532
  test/rubygems/invalidchild_cert.pem
537
533
  test/rubygems/invalidchild_cert_32.pem
538
534
  test/rubygems/invalidchild_key.pem
535
+ test/rubygems/package/tar_test_case.rb
539
536
  test/rubygems/packages/ascii_binder-0.1.10.1.gem
540
537
  test/rubygems/packages/ill-formatted-platform-1.0.0.10.gem
541
538
  test/rubygems/plugin/exception/rubygems_plugin.rb
@@ -680,6 +677,7 @@ test/rubygems/test_gem_stub_specification.rb
680
677
  test/rubygems/test_gem_text.rb
681
678
  test/rubygems/test_gem_uninstaller.rb
682
679
  test/rubygems/test_gem_unsatisfiable_dependency_error.rb
680
+ test/rubygems/test_gem_uri.rb
683
681
  test/rubygems/test_gem_uri_formatter.rb
684
682
  test/rubygems/test_gem_util.rb
685
683
  test/rubygems/test_gem_validator.rb
@@ -689,6 +687,8 @@ 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/test_rubygems.rb
691
+ test/rubygems/utilities.rb
692
692
  test/rubygems/wrong_key_cert.pem
693
693
  test/rubygems/wrong_key_cert_32.pem
694
694
  test/test_changelog_generator.rb
data/bundler/CHANGELOG.md CHANGED
@@ -1,3 +1,65 @@
1
+ # 2.2.28 (September 23, 2021)
2
+
3
+ ## Enhancements:
4
+
5
+ - Use example.com in new gem template, since it will never have a potentially dangerous backing website [#4918](https://github.com/rubygems/rubygems/pull/4918)
6
+ - Deprecate `--install` flag to `bundle remove` and trigger install by default [#4891](https://github.com/rubygems/rubygems/pull/4891)
7
+
8
+ # 2.2.27 (September 3, 2021)
9
+
10
+ ## Enhancements:
11
+
12
+ - Optimize some requires [#4887](https://github.com/rubygems/rubygems/pull/4887)
13
+ - Correctly redact credentials when using x-oauth-basic [#4866](https://github.com/rubygems/rubygems/pull/4866)
14
+
15
+ ## Bug fixes:
16
+
17
+ - Add missing key `branches:` to template for GitHub Actions [#4883](https://github.com/rubygems/rubygems/pull/4883)
18
+ - Fix `bundle plugin install` detection of already installed plugins [#4869](https://github.com/rubygems/rubygems/pull/4869)
19
+ - Make plugin installation idempotent [#4864](https://github.com/rubygems/rubygems/pull/4864)
20
+ - Fix `bundle check` showing duplicated gems when multiple platforms are locked [#4854](https://github.com/rubygems/rubygems/pull/4854)
21
+ - Fix `bundle check` incorrectly considering cached gems [#4853](https://github.com/rubygems/rubygems/pull/4853)
22
+
23
+ # 2.2.26 (August 17, 2021)
24
+
25
+ ## Enhancements:
26
+
27
+ - Remove `RUBYGEMS_GEMDEPS` warning [#4827](https://github.com/rubygems/rubygems/pull/4827)
28
+ - Better defaults for GitHub Actions template generated by `bundle gem` [#4619](https://github.com/rubygems/rubygems/pull/4619)
29
+ - Make `bundle exec` keep file descriptors by default [#4812](https://github.com/rubygems/rubygems/pull/4812)
30
+ - Exclude gemspec file itself from file list of gems generated by `bundle gem` [#4650](https://github.com/rubygems/rubygems/pull/4650)
31
+ - Fix a couple small typos in deprecation / error messages [#4806](https://github.com/rubygems/rubygems/pull/4806)
32
+ - Make script generated by `bundle install --standalone` resilient to moving the application to a differently nested folder when `path` sources are used [#4792](https://github.com/rubygems/rubygems/pull/4792)
33
+ - Exclude CI files and issue templates from file list of gems generated by `bundle gem` [#4033](https://github.com/rubygems/rubygems/pull/4033)
34
+
35
+ ## Bug fixes:
36
+
37
+ - Respect `BUNDLE_USER_HOME` env when choosing config location [#4828](https://github.com/rubygems/rubygems/pull/4828)
38
+ - Fix `bundle gem` on path with spaces [#4816](https://github.com/rubygems/rubygems/pull/4816)
39
+ - Fix bundler hitting the network in some cases where not allowed [#4805](https://github.com/rubygems/rubygems/pull/4805)
40
+
41
+ # 2.2.25 (July 30, 2021)
42
+
43
+ ## Deprecations:
44
+
45
+ - Deprecate Gemfile without an explicit global source [#4779](https://github.com/rubygems/rubygems/pull/4779)
46
+ - Deprecate `bundle cache --path` [#4496](https://github.com/rubygems/rubygems/pull/4496)
47
+
48
+ ## Enhancements:
49
+
50
+ - Give better errors when materialization fails [#4788](https://github.com/rubygems/rubygems/pull/4788)
51
+ - Lazily load `shellwords` library [#4786](https://github.com/rubygems/rubygems/pull/4786)
52
+ - 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)
53
+ - Remove LoadError message in regards to requiring a relative file [#4772](https://github.com/rubygems/rubygems/pull/4772)
54
+
55
+ ## Bug fixes:
56
+
57
+ - Fix `BUNDLE_USER_CONFIG` no longer respected as config location [#4797](https://github.com/rubygems/rubygems/pull/4797)
58
+ - Fix `--standalone` installation of default gems [#4782](https://github.com/rubygems/rubygems/pull/4782)
59
+ - Fix `--quiet` flag not printing warnings [#4781](https://github.com/rubygems/rubygems/pull/4781)
60
+ - Fix bundler binstub version selection [#4775](https://github.com/rubygems/rubygems/pull/4775)
61
+ - Fix interrupt handling in Bundler workers [#4767](https://github.com/rubygems/rubygems/pull/4767)
62
+
1
63
  # 2.2.24 (July 15, 2021)
2
64
 
3
65
  ## Bug fixes:
@@ -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-09-23".freeze
8
+ @git_commit_sha = "99b72cbd55".freeze
9
9
  @release = true
10
10
  # end ivars
11
11
 
@@ -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
 
@@ -12,12 +12,7 @@ module Bundler
12
12
  @options = options
13
13
  @cmd = args.shift
14
14
  @args = args
15
-
16
- if !Bundler.current_ruby.jruby?
17
- @args << { :close_others => !options.keep_file_descriptors? }
18
- elsif options.keep_file_descriptors?
19
- Bundler.ui.warn "Ruby version #{RUBY_VERSION} defaults to keeping non-standard file descriptors on Kernel#exec."
20
- end
15
+ @args << { :close_others => !options.keep_file_descriptors? } unless Bundler.current_ruby.jruby?
21
16
  end
22
17
 
23
18
  def run
@@ -184,14 +184,15 @@ module Bundler
184
184
  )
185
185
  end
186
186
 
187
- if File.exist?(target) && !File.directory?(target)
187
+ if target.exist? && !target.directory?
188
188
  Bundler.ui.error "Couldn't create a new gem named `#{gem_name}` because there's an existing file named `#{gem_name}`."
189
189
  exit Bundler::BundlerError.all_errors[Bundler::GenericSystemCallError]
190
190
  end
191
191
 
192
192
  if use_git
193
193
  Bundler.ui.info "Initializing git repo in #{target}"
194
- `git init #{target}`
194
+ require "shellwords"
195
+ `git init #{target.to_s.shellescape}`
195
196
 
196
197
  config[:git_default_branch] = File.read("#{target}/.git/HEAD").split("/").last.chomp
197
198
  end
@@ -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)
@@ -11,8 +11,7 @@ module Bundler
11
11
  raise InvalidOption, "Please specify gems to remove." if @gems.empty?
12
12
 
13
13
  Injector.remove(@gems, {})
14
-
15
- Installer.install(Bundler.root, Bundler.definition) if @options["install"]
14
+ Installer.install(Bundler.root, Bundler.definition)
16
15
  end
17
16
  end
18
17
  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
 
14
14
  Plugin.gemfile_install(Bundler.default_gemfile) if Bundler.feature_flag.plugins?
15
15
 
@@ -73,14 +73,6 @@ module Bundler
73
73
  Bundler.ui = UI::Shell.new(options)
74
74
  Bundler.ui.level = "debug" if options["verbose"]
75
75
  unprinted_warnings.each {|w| Bundler.ui.warn(w) }
76
-
77
- if ENV["RUBYGEMS_GEMDEPS"] && !ENV["RUBYGEMS_GEMDEPS"].empty?
78
- Bundler.ui.warn(
79
- "The RUBYGEMS_GEMDEPS environment variable is set. This enables RubyGems' " \
80
- "experimental Gemfile mode, which may conflict with Bundler and cause unexpected errors. " \
81
- "To remove this warning, unset RUBYGEMS_GEMDEPS.", :wrap => true
82
- )
83
- end
84
76
  end
85
77
 
86
78
  check_unknown_options!(:except => [:config, :exec])
@@ -192,6 +184,7 @@ module Bundler
192
184
  method_option "install", :type => :boolean, :banner =>
193
185
  "Runs 'bundle install' after removing the gems from the Gemfile"
194
186
  def remove(*gems)
187
+ SharedHelpers.major_deprecation(2, "The `--install` flag has been deprecated. `bundle install` is triggered by default.") if ARGV.include?("--install")
195
188
  require_relative "cli/remove"
196
189
  Remove.new(gems, options).run
197
190
  end
@@ -456,6 +449,12 @@ module Bundler
456
449
  "do in future versions. Instead please use `bundle config set cache_all true`, " \
457
450
  "and stop using this flag" if ARGV.include?("--all")
458
451
 
452
+ SharedHelpers.major_deprecation 2,
453
+ "The `--path` flag is deprecated because its semantics are unclear. " \
454
+ "Use `bundle config cache_path` to configure the path of your cache of gems, " \
455
+ "and `bundle config path` to configure the path where your gems are installed, " \
456
+ "and stop using this flag" if ARGV.include?("--path")
457
+
459
458
  require_relative "cli/cache"
460
459
  Cache.new(options).run
461
460
  end
@@ -463,7 +462,7 @@ module Bundler
463
462
  map aliases_for("cache")
464
463
 
465
464
  desc "exec [OPTIONS]", "Run the command in context of the bundle"
466
- method_option :keep_file_descriptors, :type => :boolean, :default => false
465
+ method_option :keep_file_descriptors, :type => :boolean, :default => true
467
466
  method_option :gemfile, :type => :string, :required => false
468
467
  long_desc <<-D
469
468
  Exec runs a command, providing it access to the gems in the bundle. While using
@@ -471,6 +470,10 @@ module Bundler
471
470
  into the system wide RubyGems repository.
472
471
  D
473
472
  def exec(*args)
473
+ if ARGV.include?("--no-keep-file-descriptors")
474
+ SharedHelpers.major_deprecation(2, "The `--no-keep-file-descriptors` has been deprecated. `bundle exec` no longer mess with your file descriptors. Close them in the exec'd script if you need to")
475
+ end
476
+
474
477
  require_relative "cli/exec"
475
478
  Exec.new(options, args).run
476
479
  end
@@ -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
@@ -503,7 +505,7 @@ module Bundler
503
505
  end
504
506
 
505
507
  def precompute_source_requirements_for_indirect_dependencies?
506
- sources.non_global_rubygems_sources.all?(&:dependency_api_available?) && !sources.aggregate_global_source?
508
+ @remote && sources.non_global_rubygems_sources.all?(&:dependency_api_available?) && !sources.aggregate_global_source?
507
509
  end
508
510
 
509
511
  def current_ruby_platform_locked?
@@ -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 " \
@@ -122,7 +122,7 @@ module Bundler
122
122
 
123
123
  class VirtualProtocolError < BundlerError
124
124
  def message
125
- "There was an error relating to virtualization and file access." \
125
+ "There was an error relating to virtualization and file access. " \
126
126
  "It is likely that you need to grant access to or mount some file system correctly."
127
127
  end
128
128
 
@@ -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