rubygems-update 3.4.22 → 3.5.0

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 (528) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +99 -2
  3. data/Manifest.txt +34 -221
  4. data/README.md +1 -3
  5. data/bundler/CHANGELOG.md +53 -0
  6. data/bundler/bundler.gemspec +4 -2
  7. data/bundler/exe/bundle +1 -10
  8. data/bundler/lib/bundler/build_metadata.rb +3 -3
  9. data/bundler/lib/bundler/capistrano.rb +1 -1
  10. data/bundler/lib/bundler/checksum.rb +245 -0
  11. data/bundler/lib/bundler/ci_detector.rb +75 -0
  12. data/bundler/lib/bundler/cli/add.rb +3 -3
  13. data/bundler/lib/bundler/cli/binstubs.rb +4 -4
  14. data/bundler/lib/bundler/cli/cache.rb +1 -1
  15. data/bundler/lib/bundler/cli/check.rb +1 -1
  16. data/bundler/lib/bundler/cli/common.rb +9 -1
  17. data/bundler/lib/bundler/cli/config.rb +8 -7
  18. data/bundler/lib/bundler/cli/console.rb +3 -2
  19. data/bundler/lib/bundler/cli/doctor.rb +2 -2
  20. data/bundler/lib/bundler/cli/exec.rb +1 -1
  21. data/bundler/lib/bundler/cli/gem.rb +28 -23
  22. data/bundler/lib/bundler/cli/info.rb +2 -13
  23. data/bundler/lib/bundler/cli/install.rb +5 -4
  24. data/bundler/lib/bundler/cli/issue.rb +1 -1
  25. data/bundler/lib/bundler/cli/lock.rb +4 -4
  26. data/bundler/lib/bundler/cli/open.rb +1 -1
  27. data/bundler/lib/bundler/cli/outdated.rb +6 -6
  28. data/bundler/lib/bundler/cli/plugin.rb +7 -14
  29. data/bundler/lib/bundler/cli/pristine.rb +38 -30
  30. data/bundler/lib/bundler/cli/show.rb +2 -2
  31. data/bundler/lib/bundler/cli/update.rb +5 -5
  32. data/bundler/lib/bundler/cli.rb +215 -263
  33. data/bundler/lib/bundler/compact_index_client/cache.rb +29 -9
  34. data/bundler/lib/bundler/compact_index_client/cache_file.rb +153 -0
  35. data/bundler/lib/bundler/compact_index_client/gem_parser.rb +7 -3
  36. data/bundler/lib/bundler/compact_index_client/updater.rb +79 -81
  37. data/bundler/lib/bundler/compact_index_client.rb +14 -7
  38. data/bundler/lib/bundler/constants.rb +1 -1
  39. data/bundler/lib/bundler/current_ruby.rb +5 -21
  40. data/bundler/lib/bundler/definition.rb +42 -15
  41. data/bundler/lib/bundler/dependency.rb +16 -12
  42. data/bundler/lib/bundler/digest.rb +2 -2
  43. data/bundler/lib/bundler/dsl.rb +43 -25
  44. data/bundler/lib/bundler/endpoint_specification.rb +5 -1
  45. data/bundler/lib/bundler/env.rb +1 -3
  46. data/bundler/lib/bundler/errors.rb +43 -0
  47. data/bundler/lib/bundler/fetcher/base.rb +3 -1
  48. data/bundler/lib/bundler/fetcher/compact_index.rb +4 -4
  49. data/bundler/lib/bundler/fetcher/downloader.rb +13 -11
  50. data/bundler/lib/bundler/fetcher/gem_remote_fetcher.rb +16 -0
  51. data/bundler/lib/bundler/fetcher/index.rb +1 -1
  52. data/bundler/lib/bundler/fetcher.rb +28 -25
  53. data/bundler/lib/bundler/friendly_errors.rb +5 -5
  54. data/bundler/lib/bundler/gem_helper.rb +1 -1
  55. data/bundler/lib/bundler/gem_helpers.rb +5 -2
  56. data/bundler/lib/bundler/graph.rb +9 -9
  57. data/bundler/lib/bundler/index.rb +1 -2
  58. data/bundler/lib/bundler/injector.rb +1 -1
  59. data/bundler/lib/bundler/inline.rb +3 -3
  60. data/bundler/lib/bundler/installer/gem_installer.rb +5 -5
  61. data/bundler/lib/bundler/installer/parallel_installer.rb +16 -8
  62. data/bundler/lib/bundler/installer/standalone.rb +2 -3
  63. data/bundler/lib/bundler/installer.rb +9 -9
  64. data/bundler/lib/bundler/lazy_specification.rb +24 -17
  65. data/bundler/lib/bundler/lockfile_generator.rb +9 -0
  66. data/bundler/lib/bundler/lockfile_parser.rb +81 -10
  67. data/bundler/lib/bundler/man/bundle-add.1 +3 -26
  68. data/bundler/lib/bundler/man/bundle-binstubs.1 +4 -16
  69. data/bundler/lib/bundler/man/bundle-cache.1 +3 -24
  70. data/bundler/lib/bundler/man/bundle-check.1 +3 -12
  71. data/bundler/lib/bundler/man/bundle-clean.1 +3 -10
  72. data/bundler/lib/bundler/man/bundle-config.1 +20 -211
  73. data/bundler/lib/bundler/man/bundle-config.1.ronn +6 -0
  74. data/bundler/lib/bundler/man/bundle-console.1 +4 -22
  75. data/bundler/lib/bundler/man/bundle-doctor.1 +4 -18
  76. data/bundler/lib/bundler/man/bundle-exec.1 +12 -73
  77. data/bundler/lib/bundler/man/bundle-gem.1 +13 -49
  78. data/bundler/lib/bundler/man/bundle-help.1 +3 -7
  79. data/bundler/lib/bundler/man/bundle-info.1 +3 -9
  80. data/bundler/lib/bundler/man/bundle-init.1 +3 -12
  81. data/bundler/lib/bundler/man/bundle-inject.1 +6 -19
  82. data/bundler/lib/bundler/man/bundle-install.1 +27 -125
  83. data/bundler/lib/bundler/man/bundle-install.1.ronn +1 -0
  84. data/bundler/lib/bundler/man/bundle-list.1 +4 -19
  85. data/bundler/lib/bundler/man/bundle-lock.1 +5 -29
  86. data/bundler/lib/bundler/man/bundle-open.1 +7 -27
  87. data/bundler/lib/bundler/man/bundle-outdated.1 +3 -55
  88. data/bundler/lib/bundler/man/bundle-outdated.1.ronn +1 -0
  89. data/bundler/lib/bundler/man/bundle-platform.1 +5 -27
  90. data/bundler/lib/bundler/man/bundle-plugin.1 +3 -29
  91. data/bundler/lib/bundler/man/bundle-pristine.1 +5 -16
  92. data/bundler/lib/bundler/man/bundle-remove.1 +4 -14
  93. data/bundler/lib/bundler/man/bundle-show.1 +3 -10
  94. data/bundler/lib/bundler/man/bundle-update.1 +18 -137
  95. data/bundler/lib/bundler/man/bundle-version.1 +3 -16
  96. data/bundler/lib/bundler/man/bundle-viz.1 +4 -16
  97. data/bundler/lib/bundler/man/bundle.1 +5 -44
  98. data/bundler/lib/bundler/man/gemfile.5 +24 -301
  99. data/bundler/lib/bundler/man/gemfile.5.ronn +4 -0
  100. data/bundler/lib/bundler/match_metadata.rb +4 -0
  101. data/bundler/lib/bundler/match_platform.rb +1 -1
  102. data/bundler/lib/bundler/plugin/api/source.rb +3 -2
  103. data/bundler/lib/bundler/plugin/installer.rb +1 -1
  104. data/bundler/lib/bundler/plugin.rb +3 -3
  105. data/bundler/lib/bundler/resolver/base.rb +1 -1
  106. data/bundler/lib/bundler/resolver/incompatibility.rb +1 -1
  107. data/bundler/lib/bundler/resolver/spec_group.rb +1 -4
  108. data/bundler/lib/bundler/resolver.rb +16 -16
  109. data/bundler/lib/bundler/ruby_dsl.rb +20 -12
  110. data/bundler/lib/bundler/ruby_version.rb +1 -1
  111. data/bundler/lib/bundler/rubygems_ext.rb +24 -50
  112. data/bundler/lib/bundler/rubygems_gem_installer.rb +6 -56
  113. data/bundler/lib/bundler/rubygems_integration.rb +25 -94
  114. data/bundler/lib/bundler/runtime.rb +2 -2
  115. data/bundler/lib/bundler/self_manager.rb +23 -7
  116. data/bundler/lib/bundler/settings.rb +27 -7
  117. data/bundler/lib/bundler/setup.rb +4 -1
  118. data/bundler/lib/bundler/shared_helpers.rb +35 -13
  119. data/bundler/lib/bundler/source/git/git_proxy.rb +15 -15
  120. data/bundler/lib/bundler/source/git.rb +4 -3
  121. data/bundler/lib/bundler/source/metadata.rb +15 -15
  122. data/bundler/lib/bundler/source/path.rb +7 -6
  123. data/bundler/lib/bundler/source/rubygems.rb +21 -14
  124. data/bundler/lib/bundler/source.rb +2 -0
  125. data/bundler/lib/bundler/spec_set.rb +38 -10
  126. data/bundler/lib/bundler/stub_specification.rb +1 -0
  127. data/bundler/lib/bundler/templates/Executable.bundler +1 -1
  128. data/bundler/lib/bundler/templates/newgem/README.md.tt +3 -3
  129. data/bundler/lib/bundler/templates/newgem/Rakefile.tt +2 -6
  130. data/bundler/lib/bundler/templates/newgem/ext/newgem/Cargo.toml.tt +1 -1
  131. data/bundler/lib/bundler/templates/newgem/standard.yml.tt +1 -1
  132. data/bundler/lib/bundler/ui/shell.rb +1 -1
  133. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/version.rb +1 -1
  134. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +53 -6
  135. data/bundler/lib/bundler/vendor/fileutils/lib/fileutils.rb +8 -20
  136. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/connection.rb +3 -3
  137. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/pool.rb +2 -2
  138. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/timed_stack_multi.rb +1 -1
  139. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +35 -35
  140. data/bundler/lib/bundler/vendor/tsort/lib/tsort.rb +3 -0
  141. data/bundler/lib/bundler/vendor/uri/lib/uri/common.rb +256 -132
  142. data/bundler/lib/bundler/vendor/uri/lib/uri/generic.rb +1 -0
  143. data/bundler/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +95 -31
  144. data/bundler/lib/bundler/vendor/uri/lib/uri/version.rb +1 -1
  145. data/bundler/lib/bundler/vendored_net_http.rb +8 -0
  146. data/bundler/lib/bundler/vendored_persistent.rb +0 -4
  147. data/bundler/lib/bundler/vendored_timeout.rb +8 -0
  148. data/bundler/lib/bundler/version.rb +1 -1
  149. data/bundler/lib/bundler/vlad.rb +1 -1
  150. data/bundler/lib/bundler/yaml_serializer.rb +3 -3
  151. data/bundler/lib/bundler.rb +38 -27
  152. data/lib/rubygems/available_set.rb +4 -4
  153. data/lib/rubygems/basic_specification.rb +35 -37
  154. data/lib/rubygems/bundler_version_finder.rb +4 -4
  155. data/lib/rubygems/ci_detector.rb +75 -0
  156. data/lib/rubygems/command.rb +13 -15
  157. data/lib/rubygems/command_manager.rb +5 -4
  158. data/lib/rubygems/commands/build_command.rb +2 -2
  159. data/lib/rubygems/commands/cert_command.rb +1 -2
  160. data/lib/rubygems/commands/check_command.rb +4 -4
  161. data/lib/rubygems/commands/cleanup_command.rb +12 -14
  162. data/lib/rubygems/commands/contents_command.rb +4 -4
  163. data/lib/rubygems/commands/dependency_command.rb +4 -5
  164. data/lib/rubygems/commands/environment_command.rb +1 -3
  165. data/lib/rubygems/commands/exec_command.rb +1 -1
  166. data/lib/rubygems/commands/fetch_command.rb +2 -2
  167. data/lib/rubygems/commands/generate_index_command.rb +39 -74
  168. data/lib/rubygems/commands/help_command.rb +3 -3
  169. data/lib/rubygems/commands/info_command.rb +2 -2
  170. data/lib/rubygems/commands/install_command.rb +8 -16
  171. data/lib/rubygems/commands/list_command.rb +2 -2
  172. data/lib/rubygems/commands/lock_command.rb +1 -1
  173. data/lib/rubygems/commands/open_command.rb +1 -1
  174. data/lib/rubygems/commands/owner_command.rb +1 -1
  175. data/lib/rubygems/commands/pristine_command.rb +13 -15
  176. data/lib/rubygems/commands/push_command.rb +2 -2
  177. data/lib/rubygems/commands/query_command.rb +4 -5
  178. data/lib/rubygems/commands/rdoc_command.rb +2 -2
  179. data/lib/rubygems/commands/search_command.rb +2 -2
  180. data/lib/rubygems/commands/setup_command.rb +31 -34
  181. data/lib/rubygems/commands/sources_command.rb +12 -12
  182. data/lib/rubygems/commands/specification_command.rb +10 -10
  183. data/lib/rubygems/commands/stale_command.rb +1 -1
  184. data/lib/rubygems/commands/uninstall_command.rb +9 -10
  185. data/lib/rubygems/commands/unpack_command.rb +4 -4
  186. data/lib/rubygems/commands/update_command.rb +10 -12
  187. data/lib/rubygems/commands/which_command.rb +1 -1
  188. data/lib/rubygems/commands/yank_command.rb +1 -1
  189. data/lib/rubygems/compatibility.rb +5 -6
  190. data/lib/rubygems/config_file.rb +4 -4
  191. data/lib/rubygems/core_ext/kernel_gem.rb +0 -2
  192. data/lib/rubygems/core_ext/kernel_require.rb +19 -48
  193. data/lib/rubygems/core_ext/kernel_warn.rb +1 -1
  194. data/lib/rubygems/core_ext/tcpsocket_init.rb +1 -1
  195. data/lib/rubygems/defaults.rb +15 -3
  196. data/lib/rubygems/dependency.rb +12 -14
  197. data/lib/rubygems/dependency_installer.rb +29 -30
  198. data/lib/rubygems/dependency_list.rb +1 -1
  199. data/lib/rubygems/deprecate.rb +16 -15
  200. data/lib/rubygems/doctor.rb +5 -5
  201. data/lib/rubygems/errors.rb +2 -6
  202. data/lib/rubygems/exceptions.rb +2 -1
  203. data/lib/rubygems/ext/builder.rb +15 -10
  204. data/lib/rubygems/ext/cargo_builder.rb +5 -5
  205. data/lib/rubygems/ext/ext_conf_builder.rb +1 -3
  206. data/lib/rubygems/gem_runner.rb +4 -4
  207. data/lib/rubygems/gemcutter_utilities/webauthn_listener/response.rb +3 -3
  208. data/lib/rubygems/gemcutter_utilities/webauthn_poller.rb +3 -3
  209. data/lib/rubygems/gemcutter_utilities.rb +18 -19
  210. data/lib/rubygems/install_update_options.rb +18 -19
  211. data/lib/rubygems/installer.rb +59 -33
  212. data/lib/rubygems/installer_uninstaller_utils.rb +0 -2
  213. data/lib/rubygems/local_remote_options.rb +7 -10
  214. data/lib/rubygems/name_tuple.rb +7 -9
  215. data/lib/rubygems/net/http.rb +3 -0
  216. data/lib/rubygems/net-http/LICENSE.txt +22 -0
  217. data/lib/rubygems/net-http/lib/net/http/backward.rb +40 -0
  218. data/lib/rubygems/net-http/lib/net/http/exceptions.rb +34 -0
  219. data/lib/rubygems/net-http/lib/net/http/generic_request.rb +414 -0
  220. data/lib/rubygems/net-http/lib/net/http/header.rb +981 -0
  221. data/lib/rubygems/net-http/lib/net/http/proxy_delta.rb +17 -0
  222. data/lib/rubygems/net-http/lib/net/http/request.rb +88 -0
  223. data/lib/rubygems/net-http/lib/net/http/requests.rb +425 -0
  224. data/lib/rubygems/net-http/lib/net/http/response.rb +738 -0
  225. data/lib/rubygems/net-http/lib/net/http/responses.rb +1174 -0
  226. data/lib/rubygems/net-http/lib/net/http/status.rb +84 -0
  227. data/lib/rubygems/net-http/lib/net/http.rb +2496 -0
  228. data/lib/rubygems/net-http/lib/net/https.rb +23 -0
  229. data/lib/rubygems/net-protocol/LICENSE.txt +22 -0
  230. data/lib/rubygems/net-protocol/lib/net/protocol.rb +544 -0
  231. data/lib/rubygems/optparse/lib/optparse.rb +39 -17
  232. data/lib/rubygems/package/old.rb +2 -2
  233. data/lib/rubygems/package/tar_header.rb +45 -39
  234. data/lib/rubygems/package/tar_reader/entry.rb +5 -4
  235. data/lib/rubygems/package/tar_reader.rb +5 -3
  236. data/lib/rubygems/package/tar_writer.rb +19 -17
  237. data/lib/rubygems/package.rb +27 -26
  238. data/lib/rubygems/package_task.rb +2 -2
  239. data/lib/rubygems/path_support.rb +9 -10
  240. data/lib/rubygems/platform.rb +60 -45
  241. data/lib/rubygems/query_utils.rb +7 -9
  242. data/lib/rubygems/remote_fetcher.rb +15 -15
  243. data/lib/rubygems/request/connection_pools.rb +3 -3
  244. data/lib/rubygems/request.rb +20 -17
  245. data/lib/rubygems/request_set/gem_dependency_api.rb +119 -122
  246. data/lib/rubygems/request_set/lockfile/parser.rb +9 -9
  247. data/lib/rubygems/request_set/lockfile/tokenizer.rb +20 -12
  248. data/lib/rubygems/request_set/lockfile.rb +6 -11
  249. data/lib/rubygems/request_set.rb +5 -5
  250. data/lib/rubygems/requirement.rb +7 -7
  251. data/lib/rubygems/resolv/LICENSE.txt +22 -0
  252. data/lib/rubygems/resolv/lib/resolv.rb +3387 -0
  253. data/lib/rubygems/resolver/activation_request.rb +1 -3
  254. data/lib/rubygems/resolver/api_set/gem_parser.rb +7 -3
  255. data/lib/rubygems/resolver/best_set.rb +1 -1
  256. data/lib/rubygems/resolver/composed_set.rb +1 -1
  257. data/lib/rubygems/resolver/conflict.rb +4 -12
  258. data/lib/rubygems/resolver/index_set.rb +4 -4
  259. data/lib/rubygems/resolver/index_specification.rb +2 -2
  260. data/lib/rubygems/resolver/installer_set.rb +5 -6
  261. data/lib/rubygems/resolver/lock_set.rb +1 -1
  262. data/lib/rubygems/resolver.rb +3 -10
  263. data/lib/rubygems/s3_uri_signer.rb +6 -6
  264. data/lib/rubygems/safe_marshal/elements.rb +138 -0
  265. data/lib/rubygems/safe_marshal/reader.rb +306 -0
  266. data/lib/rubygems/safe_marshal/visitors/stream_printer.rb +31 -0
  267. data/lib/rubygems/safe_marshal/visitors/to_ruby.rb +385 -0
  268. data/lib/rubygems/safe_marshal/visitors/visitor.rb +74 -0
  269. data/lib/rubygems/safe_marshal.rb +74 -0
  270. data/lib/rubygems/safe_yaml.rb +5 -28
  271. data/lib/rubygems/security/policies.rb +36 -38
  272. data/lib/rubygems/security/policy.rb +7 -11
  273. data/lib/rubygems/security/signer.rb +1 -1
  274. data/lib/rubygems/security/trust_dir.rb +3 -3
  275. data/lib/rubygems/security.rb +8 -22
  276. data/lib/rubygems/source/git.rb +1 -3
  277. data/lib/rubygems/source/installed.rb +0 -2
  278. data/lib/rubygems/source/local.rb +5 -8
  279. data/lib/rubygems/source/lock.rb +1 -3
  280. data/lib/rubygems/source/specific_file.rb +0 -1
  281. data/lib/rubygems/source/vendor.rb +0 -2
  282. data/lib/rubygems/source.rb +12 -12
  283. data/lib/rubygems/source_list.rb +4 -4
  284. data/lib/rubygems/spec_fetcher.rb +29 -29
  285. data/lib/rubygems/specification.rb +125 -138
  286. data/lib/rubygems/specification_policy.rb +55 -25
  287. data/lib/rubygems/stub_specification.rb +4 -5
  288. data/lib/rubygems/text.rb +1 -2
  289. data/lib/rubygems/timeout/LICENSE.txt +22 -0
  290. data/lib/rubygems/timeout/lib/timeout.rb +199 -0
  291. data/lib/rubygems/timeout.rb +3 -0
  292. data/lib/rubygems/tsort/lib/tsort.rb +3 -0
  293. data/lib/rubygems/uninstaller.rb +7 -9
  294. data/lib/rubygems/update_suggestion.rb +5 -18
  295. data/lib/rubygems/uri_formatter.rb +1 -1
  296. data/lib/rubygems/user_interaction.rb +15 -21
  297. data/lib/rubygems/util/licenses.rb +65 -35
  298. data/lib/rubygems/util/list.rb +3 -1
  299. data/lib/rubygems/util.rb +2 -4
  300. data/lib/rubygems/validator.rb +5 -3
  301. data/lib/rubygems/version.rb +34 -28
  302. data/lib/rubygems/version_option.rb +2 -5
  303. data/lib/rubygems/yaml_serializer.rb +3 -3
  304. data/lib/rubygems.rb +37 -37
  305. data/rubygems-update.gemspec +4 -4
  306. data/setup.rb +2 -2
  307. metadata +38 -225
  308. data/lib/rubygems/indexer.rb +0 -428
  309. data/lib/rubygems/mock_gem_ui.rb +0 -86
  310. data/test/rubygems/alternate_cert.pem +0 -19
  311. data/test/rubygems/alternate_cert_32.pem +0 -19
  312. data/test/rubygems/alternate_key.pem +0 -27
  313. data/test/rubygems/bad_rake.rb +0 -3
  314. data/test/rubygems/bundler_test_gem.rb +0 -424
  315. data/test/rubygems/ca_cert.pem +0 -77
  316. data/test/rubygems/child_cert.pem +0 -19
  317. data/test/rubygems/child_cert_32.pem +0 -19
  318. data/test/rubygems/child_key.pem +0 -27
  319. data/test/rubygems/client.pem +0 -107
  320. data/test/rubygems/data/excon-0.7.7.gemspec.rz +0 -0
  321. data/test/rubygems/data/gem-private_key.pem +0 -27
  322. data/test/rubygems/data/gem-public_cert.pem +0 -20
  323. data/test/rubygems/data/null-required-ruby-version.gemspec.rz +0 -0
  324. data/test/rubygems/data/null-required-rubygems-version.gemspec.rz +0 -0
  325. data/test/rubygems/data/pry-0.4.7.gemspec.rz +0 -0
  326. data/test/rubygems/encrypted_private_key.pem +0 -30
  327. data/test/rubygems/expired_cert.pem +0 -19
  328. data/test/rubygems/fake_certlib/openssl.rb +0 -9
  329. data/test/rubygems/foo/discover.rb +0 -1
  330. data/test/rubygems/future_cert.pem +0 -19
  331. data/test/rubygems/future_cert_32.pem +0 -19
  332. data/test/rubygems/good_rake.rb +0 -3
  333. data/test/rubygems/grandchild_cert.pem +0 -19
  334. data/test/rubygems/grandchild_cert_32.pem +0 -19
  335. data/test/rubygems/grandchild_key.pem +0 -27
  336. data/test/rubygems/helper.rb +0 -1649
  337. data/test/rubygems/installer_test_case.rb +0 -248
  338. data/test/rubygems/invalid_client.pem +0 -49
  339. data/test/rubygems/invalid_issuer_cert.pem +0 -20
  340. data/test/rubygems/invalid_issuer_cert_32.pem +0 -20
  341. data/test/rubygems/invalid_key.pem +0 -27
  342. data/test/rubygems/invalid_signer_cert.pem +0 -19
  343. data/test/rubygems/invalid_signer_cert_32.pem +0 -19
  344. data/test/rubygems/invalidchild_cert.pem +0 -19
  345. data/test/rubygems/invalidchild_cert_32.pem +0 -19
  346. data/test/rubygems/invalidchild_key.pem +0 -27
  347. data/test/rubygems/multifactor_auth_utilities.rb +0 -111
  348. data/test/rubygems/package/tar_test_case.rb +0 -175
  349. data/test/rubygems/packages/Bluebie-legs-0.6.2.gem +0 -0
  350. data/test/rubygems/packages/ascii_binder-0.1.10.1.gem +0 -0
  351. data/test/rubygems/packages/ill-formatted-platform-1.0.0.10.gem +0 -0
  352. data/test/rubygems/plugin/exception/rubygems_plugin.rb +0 -4
  353. data/test/rubygems/plugin/load/rubygems_plugin.rb +0 -5
  354. data/test/rubygems/plugin/standarderror/rubygems_plugin.rb +0 -4
  355. data/test/rubygems/private3072_key.pem +0 -40
  356. data/test/rubygems/private_ec_key.pem +0 -9
  357. data/test/rubygems/private_key.pem +0 -27
  358. data/test/rubygems/public3072_cert.pem +0 -25
  359. data/test/rubygems/public_cert.pem +0 -20
  360. data/test/rubygems/public_cert_32.pem +0 -19
  361. data/test/rubygems/public_key.pem +0 -9
  362. data/test/rubygems/rubygems/commands/crash_command.rb +0 -5
  363. data/test/rubygems/rubygems_plugin.rb +0 -24
  364. data/test/rubygems/sff/discover.rb +0 -1
  365. data/test/rubygems/simple_gem.rb +0 -68
  366. data/test/rubygems/specifications/bar-0.0.2.gemspec +0 -9
  367. data/test/rubygems/specifications/foo-0.0.1-x86-mswin32.gemspec +0 -0
  368. data/test/rubygems/specifications/rubyforge-0.0.1.gemspec +0 -14
  369. data/test/rubygems/ssl_cert.pem +0 -80
  370. data/test/rubygems/ssl_key.pem +0 -27
  371. data/test/rubygems/test_bundled_ca.rb +0 -61
  372. data/test/rubygems/test_config.rb +0 -28
  373. data/test/rubygems/test_deprecate.rb +0 -158
  374. data/test/rubygems/test_exit.rb +0 -17
  375. data/test/rubygems/test_gem.rb +0 -1799
  376. data/test/rubygems/test_gem_available_set.rb +0 -130
  377. data/test/rubygems/test_gem_bundler_version_finder.rb +0 -127
  378. data/test/rubygems/test_gem_command.rb +0 -403
  379. data/test/rubygems/test_gem_command_manager.rb +0 -400
  380. data/test/rubygems/test_gem_commands_build_command.rb +0 -739
  381. data/test/rubygems/test_gem_commands_cert_command.rb +0 -866
  382. data/test/rubygems/test_gem_commands_check_command.rb +0 -68
  383. data/test/rubygems/test_gem_commands_cleanup_command.rb +0 -292
  384. data/test/rubygems/test_gem_commands_contents_command.rb +0 -271
  385. data/test/rubygems/test_gem_commands_dependency_command.rb +0 -228
  386. data/test/rubygems/test_gem_commands_environment_command.rb +0 -169
  387. data/test/rubygems/test_gem_commands_exec_command.rb +0 -857
  388. data/test/rubygems/test_gem_commands_fetch_command.rb +0 -258
  389. data/test/rubygems/test_gem_commands_generate_index_command.rb +0 -81
  390. data/test/rubygems/test_gem_commands_help_command.rb +0 -94
  391. data/test/rubygems/test_gem_commands_info_command.rb +0 -70
  392. data/test/rubygems/test_gem_commands_install_command.rb +0 -1573
  393. data/test/rubygems/test_gem_commands_list_command.rb +0 -33
  394. data/test/rubygems/test_gem_commands_lock_command.rb +0 -67
  395. data/test/rubygems/test_gem_commands_mirror.rb +0 -20
  396. data/test/rubygems/test_gem_commands_open_command.rb +0 -101
  397. data/test/rubygems/test_gem_commands_outdated_command.rb +0 -50
  398. data/test/rubygems/test_gem_commands_owner_command.rb +0 -503
  399. data/test/rubygems/test_gem_commands_pristine_command.rb +0 -708
  400. data/test/rubygems/test_gem_commands_push_command.rb +0 -603
  401. data/test/rubygems/test_gem_commands_query_command.rb +0 -858
  402. data/test/rubygems/test_gem_commands_search_command.rb +0 -16
  403. data/test/rubygems/test_gem_commands_server_command.rb +0 -20
  404. data/test/rubygems/test_gem_commands_setup_command.rb +0 -474
  405. data/test/rubygems/test_gem_commands_signin_command.rb +0 -259
  406. data/test/rubygems/test_gem_commands_signout_command.rb +0 -30
  407. data/test/rubygems/test_gem_commands_sources_command.rb +0 -534
  408. data/test/rubygems/test_gem_commands_specification_command.rb +0 -277
  409. data/test/rubygems/test_gem_commands_stale_command.rb +0 -43
  410. data/test/rubygems/test_gem_commands_uninstall_command.rb +0 -542
  411. data/test/rubygems/test_gem_commands_unpack_command.rb +0 -224
  412. data/test/rubygems/test_gem_commands_update_command.rb +0 -836
  413. data/test/rubygems/test_gem_commands_which_command.rb +0 -85
  414. data/test/rubygems/test_gem_commands_yank_command.rb +0 -299
  415. data/test/rubygems/test_gem_config_file.rb +0 -551
  416. data/test/rubygems/test_gem_dependency.rb +0 -398
  417. data/test/rubygems/test_gem_dependency_installer.rb +0 -1190
  418. data/test/rubygems/test_gem_dependency_list.rb +0 -265
  419. data/test/rubygems/test_gem_dependency_resolution_error.rb +0 -27
  420. data/test/rubygems/test_gem_doctor.rb +0 -195
  421. data/test/rubygems/test_gem_ext_builder.rb +0 -337
  422. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/.gitignore +0 -1
  423. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/custom_name.gemspec +0 -10
  424. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/Cargo.lock +0 -249
  425. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/Cargo.toml +0 -10
  426. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/src/lib.rs +0 -27
  427. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/lib/custom_name.rb +0 -3
  428. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/.gitignore +0 -1
  429. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.lock +0 -249
  430. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.toml +0 -10
  431. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/rust_ruby_example.gemspec +0 -10
  432. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/src/lib.rs +0 -51
  433. data/test/rubygems/test_gem_ext_cargo_builder.rb +0 -167
  434. data/test/rubygems/test_gem_ext_cargo_builder_link_flag_converter.rb +0 -34
  435. data/test/rubygems/test_gem_ext_cargo_builder_unit.rb +0 -60
  436. data/test/rubygems/test_gem_ext_cmake_builder.rb +0 -84
  437. data/test/rubygems/test_gem_ext_configure_builder.rb +0 -80
  438. data/test/rubygems/test_gem_ext_ext_conf_builder.rb +0 -229
  439. data/test/rubygems/test_gem_ext_rake_builder.rb +0 -113
  440. data/test/rubygems/test_gem_gem_runner.rb +0 -119
  441. data/test/rubygems/test_gem_gemcutter_utilities.rb +0 -361
  442. data/test/rubygems/test_gem_impossible_dependencies_error.rb +0 -60
  443. data/test/rubygems/test_gem_indexer.rb +0 -381
  444. data/test/rubygems/test_gem_install_update_options.rb +0 -208
  445. data/test/rubygems/test_gem_installer.rb +0 -2512
  446. data/test/rubygems/test_gem_local_remote_options.rb +0 -133
  447. data/test/rubygems/test_gem_name_tuple.rb +0 -43
  448. data/test/rubygems/test_gem_package.rb +0 -1306
  449. data/test/rubygems/test_gem_package_old.rb +0 -91
  450. data/test/rubygems/test_gem_package_tar_header.rb +0 -226
  451. data/test/rubygems/test_gem_package_tar_reader.rb +0 -150
  452. data/test/rubygems/test_gem_package_tar_reader_entry.rb +0 -350
  453. data/test/rubygems/test_gem_package_tar_writer.rb +0 -331
  454. data/test/rubygems/test_gem_package_task.rb +0 -118
  455. data/test/rubygems/test_gem_path_support.rb +0 -139
  456. data/test/rubygems/test_gem_platform.rb +0 -497
  457. data/test/rubygems/test_gem_rdoc.rb +0 -137
  458. data/test/rubygems/test_gem_remote_fetcher.rb +0 -1227
  459. data/test/rubygems/test_gem_request.rb +0 -547
  460. data/test/rubygems/test_gem_request_connection_pools.rb +0 -152
  461. data/test/rubygems/test_gem_request_set.rb +0 -672
  462. data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +0 -853
  463. data/test/rubygems/test_gem_request_set_lockfile.rb +0 -469
  464. data/test/rubygems/test_gem_request_set_lockfile_parser.rb +0 -544
  465. data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +0 -307
  466. data/test/rubygems/test_gem_requirement.rb +0 -505
  467. data/test/rubygems/test_gem_resolver.rb +0 -859
  468. data/test/rubygems/test_gem_resolver_activation_request.rb +0 -43
  469. data/test/rubygems/test_gem_resolver_api_set.rb +0 -210
  470. data/test/rubygems/test_gem_resolver_api_specification.rb +0 -167
  471. data/test/rubygems/test_gem_resolver_best_set.rb +0 -159
  472. data/test/rubygems/test_gem_resolver_composed_set.rb +0 -44
  473. data/test/rubygems/test_gem_resolver_conflict.rb +0 -82
  474. data/test/rubygems/test_gem_resolver_dependency_request.rb +0 -83
  475. data/test/rubygems/test_gem_resolver_git_set.rb +0 -188
  476. data/test/rubygems/test_gem_resolver_git_specification.rb +0 -114
  477. data/test/rubygems/test_gem_resolver_index_set.rb +0 -88
  478. data/test/rubygems/test_gem_resolver_index_specification.rb +0 -93
  479. data/test/rubygems/test_gem_resolver_installed_specification.rb +0 -47
  480. data/test/rubygems/test_gem_resolver_installer_set.rb +0 -320
  481. data/test/rubygems/test_gem_resolver_local_specification.rb +0 -44
  482. data/test/rubygems/test_gem_resolver_lock_set.rb +0 -62
  483. data/test/rubygems/test_gem_resolver_lock_specification.rb +0 -98
  484. data/test/rubygems/test_gem_resolver_requirement_list.rb +0 -19
  485. data/test/rubygems/test_gem_resolver_specification.rb +0 -63
  486. data/test/rubygems/test_gem_resolver_vendor_set.rb +0 -82
  487. data/test/rubygems/test_gem_resolver_vendor_specification.rb +0 -82
  488. data/test/rubygems/test_gem_security.rb +0 -341
  489. data/test/rubygems/test_gem_security_policy.rb +0 -535
  490. data/test/rubygems/test_gem_security_signer.rb +0 -218
  491. data/test/rubygems/test_gem_security_trust_dir.rb +0 -99
  492. data/test/rubygems/test_gem_silent_ui.rb +0 -123
  493. data/test/rubygems/test_gem_source.rb +0 -254
  494. data/test/rubygems/test_gem_source_fetch_problem.rb +0 -37
  495. data/test/rubygems/test_gem_source_git.rb +0 -310
  496. data/test/rubygems/test_gem_source_installed.rb +0 -35
  497. data/test/rubygems/test_gem_source_list.rb +0 -119
  498. data/test/rubygems/test_gem_source_local.rb +0 -107
  499. data/test/rubygems/test_gem_source_lock.rb +0 -113
  500. data/test/rubygems/test_gem_source_specific_file.rb +0 -76
  501. data/test/rubygems/test_gem_source_subpath_problem.rb +0 -50
  502. data/test/rubygems/test_gem_source_vendor.rb +0 -30
  503. data/test/rubygems/test_gem_spec_fetcher.rb +0 -338
  504. data/test/rubygems/test_gem_specification.rb +0 -3856
  505. data/test/rubygems/test_gem_stream_ui.rb +0 -255
  506. data/test/rubygems/test_gem_stub_specification.rb +0 -278
  507. data/test/rubygems/test_gem_text.rb +0 -103
  508. data/test/rubygems/test_gem_uninstaller.rb +0 -675
  509. data/test/rubygems/test_gem_unsatisfiable_dependency_error.rb +0 -31
  510. data/test/rubygems/test_gem_update_suggestion.rb +0 -209
  511. data/test/rubygems/test_gem_uri.rb +0 -41
  512. data/test/rubygems/test_gem_uri_formatter.rb +0 -27
  513. data/test/rubygems/test_gem_util.rb +0 -91
  514. data/test/rubygems/test_gem_validator.rb +0 -42
  515. data/test/rubygems/test_gem_version.rb +0 -305
  516. data/test/rubygems/test_gem_version_option.rb +0 -165
  517. data/test/rubygems/test_kernel.rb +0 -124
  518. data/test/rubygems/test_project_sanity.rb +0 -49
  519. data/test/rubygems/test_remote_fetch_error.rb +0 -20
  520. data/test/rubygems/test_require.rb +0 -732
  521. data/test/rubygems/test_rubygems.rb +0 -76
  522. data/test/rubygems/test_webauthn_listener.rb +0 -143
  523. data/test/rubygems/test_webauthn_listener_response.rb +0 -93
  524. data/test/rubygems/test_webauthn_poller.rb +0 -124
  525. data/test/rubygems/utilities.rb +0 -436
  526. data/test/rubygems/wrong_key_cert.pem +0 -19
  527. data/test/rubygems/wrong_key_cert_32.pem +0 -19
  528. data/test/test_changelog_generator.rb +0 -17
@@ -9,13 +9,12 @@
9
9
  require "monitor"
10
10
 
11
11
  module Kernel
12
-
13
12
  RUBYGEMS_ACTIVATION_MONITOR = Monitor.new # :nodoc:
14
13
 
15
14
  # Make sure we have a reference to Ruby's original Kernel#require
16
15
  unless defined?(gem_original_require)
17
16
  # :stopdoc:
18
- alias gem_original_require require
17
+ alias_method :gem_original_require, :require
19
18
  private :gem_original_require
20
19
  # :startdoc:
21
20
  end
@@ -37,53 +36,36 @@ module Kernel
37
36
  def require(path) # :doc:
38
37
  return gem_original_require(path) unless Gem.discover_gems_on_require
39
38
 
40
- begin
41
- RUBYGEMS_ACTIVATION_MONITOR.enter
42
-
43
- path = path.to_path if path.respond_to? :to_path
39
+ RUBYGEMS_ACTIVATION_MONITOR.synchronize do
40
+ path = File.path(path)
44
41
 
45
42
  if spec = Gem.find_unresolved_default_spec(path)
46
43
  # Ensure -I beats a default gem
47
44
  resolved_path = begin
48
45
  rp = nil
49
46
  load_path_check_index = Gem.load_path_insert_index - Gem.activated_gem_paths
50
- Gem.suffixes.each do |s|
51
- $LOAD_PATH[0...load_path_check_index].each do |lp|
52
- safe_lp = lp.dup.tap(&Gem::UNTAINT)
53
- begin
54
- if File.symlink? safe_lp # for backward compatibility
55
- next
56
- end
57
- rescue SecurityError
58
- RUBYGEMS_ACTIVATION_MONITOR.exit
59
- raise
47
+ Gem.suffixes.find do |s|
48
+ $LOAD_PATH[0...load_path_check_index].find do |lp|
49
+ if File.symlink? lp # for backward compatibility
50
+ next
60
51
  end
61
52
 
62
- full_path = File.expand_path(File.join(safe_lp, "#{path}#{s}"))
63
- if File.file?(full_path)
64
- rp = full_path
65
- break
66
- end
53
+ full_path = File.expand_path(File.join(lp, "#{path}#{s}"))
54
+ rp = full_path if File.file?(full_path)
67
55
  end
68
- break if rp
69
56
  end
70
57
  rp
71
58
  end
72
59
 
73
- begin
74
- Kernel.send(:gem, spec.name, Gem::Requirement.default_prerelease)
75
- rescue Exception
76
- RUBYGEMS_ACTIVATION_MONITOR.exit
77
- raise
78
- end unless resolved_path
60
+ Kernel.send(:gem, spec.name, Gem::Requirement.default_prerelease) unless
61
+ resolved_path
79
62
  end
80
63
 
81
64
  # If there are no unresolved deps, then we can use just try
82
65
  # normal require handle loading a gem from the rescue below.
83
66
 
84
67
  if Gem::Specification.unresolved_deps.empty?
85
- RUBYGEMS_ACTIVATION_MONITOR.exit
86
- return gem_original_require(path)
68
+ next
87
69
  end
88
70
 
89
71
  # If +path+ is for a gem that has already been loaded, don't
@@ -93,8 +75,7 @@ module Kernel
93
75
  # TODO request access to the C implementation of this to speed up RubyGems
94
76
 
95
77
  if Gem::Specification.find_active_stub_by_path(path)
96
- RUBYGEMS_ACTIVATION_MONITOR.exit
97
- return gem_original_require(path)
78
+ next
98
79
  end
99
80
 
100
81
  # Attempt to find +path+ in any unresolved gems...
@@ -114,9 +95,7 @@ module Kernel
114
95
  if found_specs.empty?
115
96
  found_specs = Gem::Specification.find_in_unresolved_tree path
116
97
 
117
- found_specs.each do |found_spec|
118
- found_spec.activate
119
- end
98
+ found_specs.each(&:activate)
120
99
 
121
100
  # We found +path+ directly in an unresolved gem. Now we figure out, of
122
101
  # the possible found specs, which one we should activate.
@@ -127,7 +106,6 @@ module Kernel
127
106
  names = found_specs.map(&:name).uniq
128
107
 
129
108
  if names.size > 1
130
- RUBYGEMS_ACTIVATION_MONITOR.exit
131
109
  raise Gem::LoadError, "#{path} found in multiple gems: #{names.join ", "}"
132
110
  end
133
111
 
@@ -138,26 +116,20 @@ module Kernel
138
116
  unless valid
139
117
  le = Gem::LoadError.new "unable to find a version of '#{names.first}' to activate"
140
118
  le.name = names.first
141
- RUBYGEMS_ACTIVATION_MONITOR.exit
142
119
  raise le
143
120
  end
144
121
 
145
122
  valid.activate
146
123
  end
124
+ end
147
125
 
148
- RUBYGEMS_ACTIVATION_MONITOR.exit
126
+ begin
149
127
  gem_original_require(path)
150
128
  rescue LoadError => load_error
151
- if load_error.path == path
152
- RUBYGEMS_ACTIVATION_MONITOR.enter
153
-
154
- begin
155
- require_again = Gem.try_activate(path)
156
- ensure
157
- RUBYGEMS_ACTIVATION_MONITOR.exit
158
- end
129
+ if load_error.path == path &&
130
+ RUBYGEMS_ACTIVATION_MONITOR.synchronize { Gem.try_activate(path) }
159
131
 
160
- return gem_original_require(path) if require_again
132
+ return gem_original_require(path)
161
133
  end
162
134
 
163
135
  raise load_error
@@ -165,5 +137,4 @@ module Kernel
165
137
  end
166
138
 
167
139
  private :require
168
-
169
140
  end
@@ -36,7 +36,7 @@ module Kernel
36
36
  start += 1
37
37
 
38
38
  next unless path = loc.path
39
- unless path.start_with?(rubygems_path) || path.start_with?("<internal:")
39
+ unless path.start_with?(rubygems_path, "<internal:")
40
40
  # Non-rubygems frames
41
41
  uplevel -= 1
42
42
  end
@@ -19,7 +19,7 @@ module CoreExtensions
19
19
  cond_var = Thread::ConditionVariable.new
20
20
 
21
21
  Addrinfo.foreach(host, serv, nil, :STREAM) do |addr|
22
- Thread.report_on_exception = false if defined? Thread.report_on_exception = ()
22
+ Thread.report_on_exception = false
23
23
 
24
24
  threads << Thread.new(addr) do
25
25
  # give head start to ipv6 addresses
@@ -94,7 +94,7 @@ module Gem
94
94
  # The home directory for the user.
95
95
 
96
96
  def self.user_home
97
- @user_home ||= find_home.tap(&Gem::UNTAINT)
97
+ @user_home ||= find_home
98
98
  end
99
99
 
100
100
  ##
@@ -131,14 +131,14 @@ module Gem
131
131
  # The path to standard location of the user's .gemrc file.
132
132
 
133
133
  def self.config_file
134
- @config_file ||= find_config_file.tap(&Gem::UNTAINT)
134
+ @config_file ||= find_config_file
135
135
  end
136
136
 
137
137
  ##
138
138
  # The path to standard location of the user's state file.
139
139
 
140
140
  def self.state_file
141
- @state_file ||= File.join(Gem.state_home, "gem", "last_update_check").tap(&Gem::UNTAINT)
141
+ @state_file ||= File.join(Gem.state_home, "gem", "last_update_check")
142
142
  end
143
143
 
144
144
  ##
@@ -235,6 +235,18 @@ module Gem
235
235
  default_cert_path
236
236
  end
237
237
 
238
+ ##
239
+ # Enables automatic installation into user directory
240
+
241
+ def self.default_user_install # :nodoc:
242
+ if !ENV.key?("GEM_HOME") && (File.exist?(Gem.dir) && !File.writable?(Gem.dir))
243
+ Gem.ui.say "Defaulting to user installation because default installation directory (#{Gem.dir}) is not writable."
244
+ return true
245
+ end
246
+
247
+ false
248
+ end
249
+
238
250
  ##
239
251
  # Install extensions into lib as well as into the extension directory.
240
252
 
@@ -46,10 +46,10 @@ class Gem::Dependency
46
46
  end
47
47
 
48
48
  type = Symbol === requirements.last ? requirements.pop : :runtime
49
- requirements = requirements.first if 1 == requirements.length # unpack
49
+ requirements = requirements.first if requirements.length == 1 # unpack
50
50
 
51
51
  unless TYPES.include? type
52
- raise ArgumentError, "Valid types are #{TYPES.inspect}, " +
52
+ raise ArgumentError, "Valid types are #{TYPES.inspect}, " \
53
53
  "not #{type.inspect}"
54
54
  end
55
55
 
@@ -74,11 +74,9 @@ class Gem::Dependency
74
74
 
75
75
  def inspect # :nodoc:
76
76
  if prerelease?
77
- "<%s type=%p name=%p requirements=%p prerelease=ok>" %
78
- [self.class, self.type, self.name, requirement.to_s]
77
+ format("<%s type=%p name=%p requirements=%p prerelease=ok>", self.class, type, name, requirement.to_s)
79
78
  else
80
- "<%s type=%p name=%p requirements=%p>" %
81
- [self.class, self.type, self.name, requirement.to_s]
79
+ format("<%s type=%p name=%p requirements=%p>", self.class, type, name, requirement.to_s)
82
80
  end
83
81
  end
84
82
 
@@ -169,16 +167,16 @@ class Gem::Dependency
169
167
 
170
168
  def ==(other) # :nodoc:
171
169
  Gem::Dependency === other &&
172
- self.name == other.name &&
173
- self.type == other.type &&
174
- self.requirement == other.requirement
170
+ name == other.name &&
171
+ type == other.type &&
172
+ requirement == other.requirement
175
173
  end
176
174
 
177
175
  ##
178
176
  # Dependencies are ordered by name.
179
177
 
180
178
  def <=>(other)
181
- self.name <=> other.name
179
+ name <=> other.name
182
180
  end
183
181
 
184
182
  ##
@@ -205,7 +203,7 @@ class Gem::Dependency
205
203
  requirement.satisfied_by? version
206
204
  end
207
205
 
208
- alias === =~
206
+ alias_method :===, :=~
209
207
 
210
208
  ##
211
209
  # :call-seq:
@@ -263,7 +261,7 @@ class Gem::Dependency
263
261
  end
264
262
 
265
263
  default = Gem::Requirement.default
266
- self_req = self.requirement
264
+ self_req = requirement
267
265
  other_req = other.requirement
268
266
 
269
267
  return self.class.new name, self_req if other_req == default
@@ -324,9 +322,9 @@ class Gem::Dependency
324
322
  end
325
323
 
326
324
  def to_spec
327
- matches = self.to_specs.compact
325
+ matches = to_specs.compact
328
326
 
329
- active = matches.find {|spec| spec.activated? }
327
+ active = matches.find(&:activated?)
330
328
  return active if active
331
329
 
332
330
  unless prerelease?
@@ -17,18 +17,18 @@ class Gem::DependencyInstaller
17
17
  extend Gem::Deprecate
18
18
 
19
19
  DEFAULT_OPTIONS = { # :nodoc:
20
- :env_shebang => false,
21
- :document => %w[ri],
22
- :domain => :both, # HACK: dup
23
- :force => false,
24
- :format_executable => false, # HACK: dup
25
- :ignore_dependencies => false,
26
- :prerelease => false,
27
- :security_policy => nil, # HACK: NoSecurity requires OpenSSL. AlmostNo? Low?
28
- :wrappers => true,
29
- :build_args => nil,
30
- :build_docs_in_background => false,
31
- :install_as_default => false,
20
+ env_shebang: false,
21
+ document: %w[ri],
22
+ domain: :both, # HACK: dup
23
+ force: false,
24
+ format_executable: false, # HACK: dup
25
+ ignore_dependencies: false,
26
+ prerelease: false,
27
+ security_policy: nil, # HACK: NoSecurity requires OpenSSL. AlmostNo? Low?
28
+ wrappers: true,
29
+ build_args: nil,
30
+ build_docs_in_background: false,
31
+ install_as_default: false,
32
32
  }.freeze
33
33
 
34
34
  ##
@@ -66,7 +66,7 @@ class Gem::DependencyInstaller
66
66
  # :build_args:: See Gem::Installer::new
67
67
 
68
68
  def initialize(options = {})
69
- @only_install_dir = !!options[:install_dir]
69
+ @only_install_dir = !options[:install_dir].nil?
70
70
  @install_dir = options[:install_dir] || Gem.dir
71
71
  @build_root = options[:build_root]
72
72
 
@@ -177,7 +177,6 @@ class Gem::DependencyInstaller
177
177
  end
178
178
 
179
179
  set << specs
180
-
181
180
  rescue Gem::RemoteFetcher::FetchError => e
182
181
  # FIX if there is a problem talking to the network, we either need to always tell
183
182
  # the user (no really_verbose) or fail hard, not silently tell them that we just
@@ -229,22 +228,22 @@ class Gem::DependencyInstaller
229
228
  @installed_gems = []
230
229
 
231
230
  options = {
232
- :bin_dir => @bin_dir,
233
- :build_args => @build_args,
234
- :document => @document,
235
- :env_shebang => @env_shebang,
236
- :force => @force,
237
- :format_executable => @format_executable,
238
- :ignore_dependencies => @ignore_dependencies,
239
- :prerelease => @prerelease,
240
- :security_policy => @security_policy,
241
- :user_install => @user_install,
242
- :wrappers => @wrappers,
243
- :build_root => @build_root,
244
- :install_as_default => @install_as_default,
245
- :dir_mode => @dir_mode,
246
- :data_mode => @data_mode,
247
- :prog_mode => @prog_mode,
231
+ bin_dir: @bin_dir,
232
+ build_args: @build_args,
233
+ document: @document,
234
+ env_shebang: @env_shebang,
235
+ force: @force,
236
+ format_executable: @format_executable,
237
+ ignore_dependencies: @ignore_dependencies,
238
+ prerelease: @prerelease,
239
+ security_policy: @security_policy,
240
+ user_install: @user_install,
241
+ wrappers: @wrappers,
242
+ build_root: @build_root,
243
+ install_as_default: @install_as_default,
244
+ dir_mode: @dir_mode,
245
+ data_mode: @data_mode,
246
+ prog_mode: @prog_mode,
248
247
  }
249
248
  options[:install_dir] = @install_dir if @only_install_dir
250
249
 
@@ -105,7 +105,7 @@ class Gem::DependencyList
105
105
  end
106
106
 
107
107
  def inspect # :nodoc:
108
- "%s %p>" % [super[0..-2], map {|s| s.full_name }]
108
+ format("%s %p>", super[0..-2], map(&:full_name))
109
109
  end
110
110
 
111
111
  ##
@@ -70,7 +70,6 @@
70
70
  # end
71
71
 
72
72
  module Gem::Deprecate
73
-
74
73
  def self.skip # :nodoc:
75
74
  @skip ||= false
76
75
  end
@@ -105,12 +104,13 @@ module Gem::Deprecate
105
104
  old = "_deprecated_#{name}"
106
105
  alias_method old, name
107
106
  define_method name do |*args, &block|
108
- klass = self.is_a? Module
107
+ klass = is_a? Module
109
108
  target = klass ? "#{self}." : "#{self.class}#"
110
- msg = [ "NOTE: #{target}#{name} is deprecated",
111
- repl == :none ? " with no replacement" : "; use #{repl} instead",
112
- ". It will be removed on or after %4d-%02d." % [year, month],
113
- "\n#{target}#{name} called from #{Gem.location_of_caller.join(":")}",
109
+ msg = [
110
+ "NOTE: #{target}#{name} is deprecated",
111
+ repl == :none ? " with no replacement" : "; use #{repl} instead",
112
+ format(". It will be removed on or after %4d-%02d.", year, month),
113
+ "\n#{target}#{name} called from #{Gem.location_of_caller.join(":")}",
114
114
  ]
115
115
  warn "#{msg.join}." unless Gem::Deprecate.skip
116
116
  send old, *args, &block
@@ -130,12 +130,13 @@ module Gem::Deprecate
130
130
  old = "_deprecated_#{name}"
131
131
  alias_method old, name
132
132
  define_method name do |*args, &block|
133
- klass = self.is_a? Module
133
+ klass = is_a? Module
134
134
  target = klass ? "#{self}." : "#{self.class}#"
135
- msg = [ "NOTE: #{target}#{name} is deprecated",
136
- replacement == :none ? " with no replacement" : "; use #{replacement} instead",
137
- ". It will be removed in Rubygems #{Gem::Deprecate.next_rubygems_major_version}",
138
- "\n#{target}#{name} called from #{Gem.location_of_caller.join(":")}",
135
+ msg = [
136
+ "NOTE: #{target}#{name} is deprecated",
137
+ replacement == :none ? " with no replacement" : "; use #{replacement} instead",
138
+ ". It will be removed in Rubygems #{Gem::Deprecate.next_rubygems_major_version}",
139
+ "\n#{target}#{name} called from #{Gem.location_of_caller.join(":")}",
139
140
  ]
140
141
  warn "#{msg.join}." unless Gem::Deprecate.skip
141
142
  send old, *args, &block
@@ -152,15 +153,15 @@ module Gem::Deprecate
152
153
  end
153
154
 
154
155
  define_method "deprecation_warning" do
155
- msg = [ "#{self.command} command is deprecated",
156
- ". It will be removed in Rubygems #{version}.\n",
156
+ msg = [
157
+ "#{command} command is deprecated",
158
+ ". It will be removed in Rubygems #{version}.\n",
157
159
  ]
158
160
 
159
- alert_warning "#{msg.join}" unless Gem::Deprecate.skip
161
+ alert_warning msg.join.to_s unless Gem::Deprecate.skip
160
162
  end
161
163
  end
162
164
  end
163
165
 
164
166
  module_function :rubygems_deprecate, :rubygems_deprecate_command, :skip_during
165
-
166
167
  end
@@ -53,7 +53,7 @@ class Gem::Doctor
53
53
  # Specs installed in this gem repository
54
54
 
55
55
  def installed_specs # :nodoc:
56
- @installed_specs ||= Gem::Specification.map {|s| s.full_name }
56
+ @installed_specs ||= Gem::Specification.map(&:full_name)
57
57
  end
58
58
 
59
59
  ##
@@ -75,7 +75,7 @@ class Gem::Doctor
75
75
  Gem.use_paths @gem_repository.to_s
76
76
 
77
77
  unless gem_repository?
78
- say "This directory does not appear to be a RubyGems repository, " +
78
+ say "This directory does not appear to be a RubyGems repository, " \
79
79
  "skipping"
80
80
  say
81
81
  return
@@ -104,7 +104,7 @@ class Gem::Doctor
104
104
  directory = File.join(@gem_repository, sub_directory)
105
105
 
106
106
  Dir.entries(directory).sort.each do |ent|
107
- next if ent == "." || ent == ".."
107
+ next if [".", ".."].include?(ent)
108
108
 
109
109
  child = File.join(directory, ent)
110
110
  next unless File.exist?(child)
@@ -112,8 +112,8 @@ class Gem::Doctor
112
112
  basename = File.basename(child, extension)
113
113
  next if installed_specs.include? basename
114
114
  next if /^rubygems-\d/.match?(basename)
115
- next if "specifications" == sub_directory && "default" == basename
116
- next if "plugins" == sub_directory && Gem.plugin_suffix_regexp =~ (basename)
115
+ next if sub_directory == "specifications" && basename == "default"
116
+ next if sub_directory == "plugins" && Gem.plugin_suffix_regexp =~ (basename)
117
117
 
118
118
  type = File.directory?(child) ? "directory" : "file"
119
119
 
@@ -134,11 +134,7 @@ module Gem
134
134
  ##
135
135
  # A wordy description of the error.
136
136
  def wordy
137
- "Found %s (%s), but was for platform%s %s" %
138
- [@name,
139
- @version,
140
- @platforms.size == 1 ? "" : "s",
141
- @platforms.join(" ,")]
137
+ format("Found %s (%s), but was for platform%s %s", @name, @version, @platforms.size == 1 ? "" : "s", @platforms.join(" ,"))
142
138
  end
143
139
  end
144
140
 
@@ -175,6 +171,6 @@ module Gem
175
171
  ##
176
172
  # The "exception" alias allows you to call raise on a SourceFetchProblem.
177
173
 
178
- alias exception error
174
+ alias_method :exception, :error
179
175
  end
180
176
  end
@@ -172,6 +172,7 @@ class Gem::ImpossibleDependenciesError < Gem::Exception
172
172
  end
173
173
 
174
174
  class Gem::InstallError < Gem::Exception; end
175
+
175
176
  class Gem::RuntimeRequirementNotMetError < Gem::InstallError
176
177
  attr_accessor :suggestion
177
178
  def message
@@ -231,7 +232,7 @@ class Gem::SystemExitException < SystemExit
231
232
  ##
232
233
  # The exit code for the process
233
234
 
234
- alias exit_code status
235
+ alias_method :exit_code, :status
235
236
 
236
237
  ##
237
238
  # Creates a new SystemExitException with the given +exit_code+
@@ -27,19 +27,17 @@ class Gem::Ext::Builder
27
27
  # try to find make program from Ruby configure arguments first
28
28
  RbConfig::CONFIG["configure_args"] =~ /with-make-prog\=(\w+)/
29
29
  make_program_name = ENV["MAKE"] || ENV["make"] || $1
30
- unless make_program_name
31
- make_program_name = (RUBY_PLATFORM.include?("mswin")) ? "nmake" : "make"
32
- end
30
+ make_program_name ||= RUBY_PLATFORM.include?("mswin") ? "nmake" : "make"
33
31
  make_program = Shellwords.split(make_program_name)
34
32
 
35
33
  # The installation of the bundled gems is failed when DESTDIR is empty in mswin platform.
36
- destdir = (/\bnmake/i !~ make_program_name || ENV["DESTDIR"] && ENV["DESTDIR"] != "") ? "DESTDIR=%s" % ENV["DESTDIR"] : ""
34
+ destdir = /\bnmake/i !~ make_program_name || ENV["DESTDIR"] && ENV["DESTDIR"] != "" ? format("DESTDIR=%s", ENV["DESTDIR"]) : ""
37
35
 
38
36
  env = [destdir]
39
37
 
40
38
  if sitedir
41
- env << "sitearchdir=%s" % sitedir
42
- env << "sitelibdir=%s" % sitedir
39
+ env << format("sitearchdir=%s", sitedir)
40
+ env << format("sitelibdir=%s", sitedir)
43
41
  end
44
42
 
45
43
  targets.each do |target|
@@ -90,13 +88,20 @@ class Gem::Ext::Builder
90
88
  # Set $SOURCE_DATE_EPOCH for the subprocess.
91
89
  build_env = { "SOURCE_DATE_EPOCH" => Gem.source_date_epoch_string }.merge(env)
92
90
  output, status = begin
93
- Open3.capture2e(build_env, *command, :chdir => dir)
91
+ Open3.popen2e(build_env, *command, chdir: dir) do |_stdin, stdouterr, wait_thread|
92
+ output = String.new
93
+ while line = stdouterr.gets
94
+ output << line
95
+ if verbose
96
+ print line
97
+ end
98
+ end
99
+ [output, wait_thread.value]
100
+ end
94
101
  rescue StandardError => error
95
102
  raise Gem::InstallError, "#{command_name || class_name} failed#{error.message}"
96
103
  end
97
- if verbose
98
- puts output
99
- else
104
+ unless verbose
100
105
  results << output
101
106
  end
102
107
  ensure
@@ -198,7 +198,7 @@ class Gem::Ext::CargoBuilder < Gem::Ext::Builder
198
198
 
199
199
  output, status =
200
200
  begin
201
- Open3.capture2e(cargo, "metadata", "--no-deps", "--format-version", "1", :chdir => cargo_dir)
201
+ Open3.capture2e(cargo, "metadata", "--no-deps", "--format-version", "1", chdir: cargo_dir)
202
202
  rescue StandardError => error
203
203
  raise Gem::InstallError, "cargo metadata failed #{error.message}"
204
204
  end
@@ -246,10 +246,10 @@ EOF
246
246
  end
247
247
 
248
248
  def rustc_dynamic_linker_flags(dest_dir, crate_name)
249
- split_flags("DLDFLAGS")
250
- .map {|arg| maybe_resolve_ldflag_variable(arg, dest_dir, crate_name) }
251
- .compact
252
- .flat_map {|arg| ldflag_to_link_modifier(arg) }
249
+ split_flags("DLDFLAGS").
250
+ map {|arg| maybe_resolve_ldflag_variable(arg, dest_dir, crate_name) }.
251
+ compact.
252
+ flat_map {|arg| ldflag_to_link_modifier(arg) }
253
253
  end
254
254
 
255
255
  def rustc_lib_flags(dest_dir)
@@ -48,7 +48,7 @@ class Gem::Ext::ExtConfBuilder < Gem::Ext::Builder
48
48
  FileUtils.mkdir_p lib_dir
49
49
  entries = Dir.entries(full_tmp_dest) - %w[. ..]
50
50
  entries = entries.map {|entry| File.join full_tmp_dest, entry }
51
- FileUtils.cp_r entries, lib_dir, :remove_destination => true
51
+ FileUtils.cp_r entries, lib_dir, remove_destination: true
52
52
  end
53
53
 
54
54
  FileUtils::Entry_.new(full_tmp_dest).traverse do |ent|
@@ -66,8 +66,6 @@ class Gem::Ext::ExtConfBuilder < Gem::Ext::Builder
66
66
  FileUtils.rm_rf tmp_dest if tmp_dest
67
67
  end
68
68
 
69
- private
70
-
71
69
  def self.get_relative_path(path, base)
72
70
  path[0..base.length - 1] = "." if path.start_with?(base)
73
71
  path
@@ -45,10 +45,10 @@ class Gem::GemRunner
45
45
  cmd.command_names.each do |command_name|
46
46
  config_args = Gem.configuration[command_name]
47
47
  config_args = case config_args
48
- when String
49
- config_args.split " "
50
- else
51
- Array(config_args)
48
+ when String
49
+ config_args.split " "
50
+ else
51
+ Array(config_args)
52
52
  end
53
53
  Gem::Command.add_specific_extra_args command_name, config_args
54
54
  end
@@ -2,9 +2,9 @@
2
2
 
3
3
  ##
4
4
  # The WebauthnListener Response class is used by the WebauthnListener to create
5
- # responses to be sent to the Gem host. It creates a Net::HTTPResponse instance
5
+ # responses to be sent to the Gem host. It creates a Gem::Net::HTTPResponse instance
6
6
  # when initialized and can be converted to the appropriate format to be sent by a socket using `to_s`.
7
- # Net::HTTPResponse instances cannot be directly sent over a socket.
7
+ # Gem::Net::HTTPResponse instances cannot be directly sent over a socket.
8
8
  #
9
9
  # Types of response classes:
10
10
  # - OkResponse
@@ -60,7 +60,7 @@ module Gem::GemcutterUtilities
60
60
  def body; end
61
61
 
62
62
  def build_http_response
63
- response_class = Net::HTTPResponse::CODE_TO_OBJ[code.to_s]
63
+ response_class = Gem::Net::HTTPResponse::CODE_TO_OBJ[code.to_s]
64
64
  @http_response = response_class.new("1.1", code, reason_phrase)
65
65
  @http_response.instance_variable_set(:@read, true)
66
66