rubygems-update 3.2.30 → 3.4.10

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 (641) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +1666 -994
  3. data/CONTRIBUTING.md +71 -15
  4. data/Manifest.txt +93 -37
  5. data/POLICIES.md +65 -16
  6. data/README.md +28 -13
  7. data/UPGRADING.md +5 -81
  8. data/bin/gem +2 -10
  9. data/bin/update_rubygems +5 -5
  10. data/bundler/CHANGELOG.md +647 -1
  11. data/bundler/README.md +3 -6
  12. data/bundler/UPGRADING.md +11 -4
  13. data/bundler/bundler.gemspec +8 -10
  14. data/bundler/exe/bundle +7 -11
  15. data/bundler/exe/bundler +1 -1
  16. data/bundler/lib/bundler/.document +1 -0
  17. data/bundler/lib/bundler/build_metadata.rb +3 -3
  18. data/bundler/lib/bundler/cli/add.rb +1 -1
  19. data/bundler/lib/bundler/cli/binstubs.rb +5 -1
  20. data/bundler/lib/bundler/cli/check.rb +1 -1
  21. data/bundler/lib/bundler/cli/common.rb +4 -2
  22. data/bundler/lib/bundler/cli/config.rb +10 -1
  23. data/bundler/lib/bundler/cli/console.rb +2 -2
  24. data/bundler/lib/bundler/cli/doctor.rb +10 -3
  25. data/bundler/lib/bundler/cli/gem.rb +136 -42
  26. data/bundler/lib/bundler/cli/info.rb +17 -3
  27. data/bundler/lib/bundler/cli/init.rb +6 -2
  28. data/bundler/lib/bundler/cli/install.rb +15 -33
  29. data/bundler/lib/bundler/cli/lock.rb +8 -5
  30. data/bundler/lib/bundler/cli/open.rb +6 -4
  31. data/bundler/lib/bundler/cli/outdated.rb +13 -6
  32. data/bundler/lib/bundler/cli/platform.rb +2 -2
  33. data/bundler/lib/bundler/cli/show.rb +1 -1
  34. data/bundler/lib/bundler/cli/update.rb +8 -4
  35. data/bundler/lib/bundler/cli/viz.rb +1 -1
  36. data/bundler/lib/bundler/cli.rb +67 -21
  37. data/bundler/lib/bundler/compact_index_client/cache.rb +1 -10
  38. data/bundler/lib/bundler/compact_index_client/updater.rb +53 -44
  39. data/bundler/lib/bundler/compact_index_client.rb +0 -6
  40. data/bundler/lib/bundler/constants.rb +1 -1
  41. data/bundler/lib/bundler/current_ruby.rb +18 -6
  42. data/bundler/lib/bundler/definition.rb +259 -242
  43. data/bundler/lib/bundler/dependency.rb +24 -71
  44. data/bundler/lib/bundler/digest.rb +1 -1
  45. data/bundler/lib/bundler/dsl.rb +29 -46
  46. data/bundler/lib/bundler/endpoint_specification.rb +15 -13
  47. data/bundler/lib/bundler/env.rb +2 -2
  48. data/bundler/lib/bundler/environment_preserver.rb +7 -3
  49. data/bundler/lib/bundler/errors.rb +15 -15
  50. data/bundler/lib/bundler/feature_flag.rb +0 -1
  51. data/bundler/lib/bundler/fetcher/base.rb +6 -8
  52. data/bundler/lib/bundler/fetcher/compact_index.rb +18 -25
  53. data/bundler/lib/bundler/fetcher/dependency.rb +2 -6
  54. data/bundler/lib/bundler/fetcher/downloader.rb +2 -5
  55. data/bundler/lib/bundler/fetcher/index.rb +0 -26
  56. data/bundler/lib/bundler/fetcher.rb +22 -29
  57. data/bundler/lib/bundler/force_platform.rb +18 -0
  58. data/bundler/lib/bundler/friendly_errors.rb +21 -7
  59. data/bundler/lib/bundler/gem_helper.rb +4 -4
  60. data/bundler/lib/bundler/gem_helpers.rb +9 -2
  61. data/bundler/lib/bundler/gem_version_promoter.rb +53 -98
  62. data/bundler/lib/bundler/graph.rb +3 -3
  63. data/bundler/lib/bundler/index.rb +13 -51
  64. data/bundler/lib/bundler/injector.rb +18 -4
  65. data/bundler/lib/bundler/inline.rb +9 -21
  66. data/bundler/lib/bundler/installer/gem_installer.rb +13 -5
  67. data/bundler/lib/bundler/installer/parallel_installer.rb +3 -33
  68. data/bundler/lib/bundler/installer/standalone.rb +42 -11
  69. data/bundler/lib/bundler/installer.rb +20 -44
  70. data/bundler/lib/bundler/lazy_specification.rb +72 -55
  71. data/bundler/lib/bundler/lockfile_generator.rb +3 -3
  72. data/bundler/lib/bundler/lockfile_parser.rb +28 -26
  73. data/bundler/lib/bundler/man/bundle-add.1 +21 -5
  74. data/bundler/lib/bundler/man/bundle-add.1.ronn +16 -4
  75. data/bundler/lib/bundler/man/bundle-binstubs.1 +1 -1
  76. data/bundler/lib/bundler/man/bundle-cache.1 +7 -1
  77. data/bundler/lib/bundler/man/bundle-cache.1.ronn +7 -0
  78. data/bundler/lib/bundler/man/bundle-check.1 +1 -1
  79. data/bundler/lib/bundler/man/bundle-clean.1 +2 -2
  80. data/bundler/lib/bundler/man/bundle-clean.1.ronn +1 -1
  81. data/bundler/lib/bundler/man/bundle-config.1 +34 -15
  82. data/bundler/lib/bundler/man/bundle-config.1.ronn +31 -19
  83. data/bundler/lib/bundler/man/bundle-console.1 +53 -0
  84. data/bundler/lib/bundler/man/bundle-console.1.ronn +44 -0
  85. data/bundler/lib/bundler/man/bundle-doctor.1 +1 -1
  86. data/bundler/lib/bundler/man/bundle-exec.1 +6 -6
  87. data/bundler/lib/bundler/man/bundle-exec.1.ronn +6 -6
  88. data/bundler/lib/bundler/man/bundle-gem.1 +37 -34
  89. data/bundler/lib/bundler/man/bundle-gem.1.ronn +21 -5
  90. data/bundler/lib/bundler/man/bundle-help.1 +13 -0
  91. data/bundler/lib/bundler/man/bundle-help.1.ronn +12 -0
  92. data/bundler/lib/bundler/man/bundle-info.1 +1 -1
  93. data/bundler/lib/bundler/man/bundle-init.1 +5 -1
  94. data/bundler/lib/bundler/man/bundle-init.1.ronn +2 -0
  95. data/bundler/lib/bundler/man/bundle-inject.1 +5 -2
  96. data/bundler/lib/bundler/man/bundle-inject.1.ronn +3 -1
  97. data/bundler/lib/bundler/man/bundle-install.1 +6 -31
  98. data/bundler/lib/bundler/man/bundle-install.1.ronn +8 -31
  99. data/bundler/lib/bundler/man/bundle-list.1 +1 -1
  100. data/bundler/lib/bundler/man/bundle-lock.1 +1 -1
  101. data/bundler/lib/bundler/man/bundle-open.1 +22 -2
  102. data/bundler/lib/bundler/man/bundle-open.1.ronn +9 -1
  103. data/bundler/lib/bundler/man/bundle-outdated.1 +3 -10
  104. data/bundler/lib/bundler/man/bundle-outdated.1.ronn +1 -10
  105. data/bundler/lib/bundler/man/bundle-platform.1 +16 -6
  106. data/bundler/lib/bundler/man/bundle-platform.1.ronn +14 -7
  107. data/bundler/lib/bundler/man/bundle-plugin.1 +81 -0
  108. data/bundler/lib/bundler/man/bundle-plugin.1.ronn +59 -0
  109. data/bundler/lib/bundler/man/bundle-pristine.1 +1 -1
  110. data/bundler/lib/bundler/man/bundle-remove.1 +1 -1
  111. data/bundler/lib/bundler/man/bundle-show.1 +1 -1
  112. data/bundler/lib/bundler/man/bundle-update.1 +2 -2
  113. data/bundler/lib/bundler/man/bundle-update.1.ronn +2 -1
  114. data/bundler/lib/bundler/man/bundle-version.1 +35 -0
  115. data/bundler/lib/bundler/man/bundle-version.1.ronn +24 -0
  116. data/bundler/lib/bundler/man/bundle-viz.1 +4 -1
  117. data/bundler/lib/bundler/man/bundle-viz.1.ronn +2 -0
  118. data/bundler/lib/bundler/man/bundle.1 +15 -10
  119. data/bundler/lib/bundler/man/bundle.1.ronn +12 -7
  120. data/bundler/lib/bundler/man/gemfile.5 +117 -80
  121. data/bundler/lib/bundler/man/gemfile.5.ronn +105 -84
  122. data/bundler/lib/bundler/man/index.txt +4 -0
  123. data/bundler/lib/bundler/match_metadata.rb +13 -0
  124. data/bundler/lib/bundler/match_platform.rb +0 -1
  125. data/bundler/lib/bundler/match_remote_metadata.rb +29 -0
  126. data/bundler/lib/bundler/mirror.rb +5 -7
  127. data/bundler/lib/bundler/plugin/api/source.rb +4 -9
  128. data/bundler/lib/bundler/plugin/index.rb +4 -4
  129. data/bundler/lib/bundler/plugin/installer/git.rb +0 -4
  130. data/bundler/lib/bundler/plugin/installer/rubygems.rb +0 -8
  131. data/bundler/lib/bundler/plugin/installer.rb +6 -3
  132. data/bundler/lib/bundler/plugin.rb +3 -1
  133. data/bundler/lib/bundler/process_lock.rb +1 -1
  134. data/bundler/lib/bundler/remote_specification.rb +7 -5
  135. data/bundler/lib/bundler/resolver/base.rb +109 -0
  136. data/bundler/lib/bundler/resolver/candidate.rb +94 -0
  137. data/bundler/lib/bundler/resolver/incompatibility.rb +15 -0
  138. data/bundler/lib/bundler/resolver/package.rb +72 -0
  139. data/bundler/lib/bundler/resolver/root.rb +25 -0
  140. data/bundler/lib/bundler/resolver/spec_group.rb +43 -71
  141. data/bundler/lib/bundler/resolver.rb +332 -308
  142. data/bundler/lib/bundler/ruby_dsl.rb +1 -1
  143. data/bundler/lib/bundler/ruby_version.rb +5 -18
  144. data/bundler/lib/bundler/rubygems_ext.rb +144 -25
  145. data/bundler/lib/bundler/rubygems_gem_installer.rb +32 -20
  146. data/bundler/lib/bundler/rubygems_integration.rb +24 -95
  147. data/bundler/lib/bundler/runtime.rb +2 -7
  148. data/bundler/lib/bundler/self_manager.rb +168 -0
  149. data/bundler/lib/bundler/settings.rb +5 -10
  150. data/bundler/lib/bundler/setup.rb +4 -1
  151. data/bundler/lib/bundler/shared_helpers.rb +17 -25
  152. data/bundler/lib/bundler/source/git/git_proxy.rb +219 -71
  153. data/bundler/lib/bundler/source/git.rb +23 -26
  154. data/bundler/lib/bundler/source/metadata.rb +3 -4
  155. data/bundler/lib/bundler/source/path/installer.rb +1 -22
  156. data/bundler/lib/bundler/source/path.rb +7 -7
  157. data/bundler/lib/bundler/source/rubygems.rb +91 -130
  158. data/bundler/lib/bundler/source/rubygems_aggregate.rb +1 -1
  159. data/bundler/lib/bundler/source.rb +4 -5
  160. data/bundler/lib/bundler/source_list.rb +19 -31
  161. data/bundler/lib/bundler/source_map.rb +15 -2
  162. data/bundler/lib/bundler/spec_set.rb +63 -35
  163. data/bundler/lib/bundler/stub_specification.rb +5 -3
  164. data/bundler/lib/bundler/templates/Executable +3 -5
  165. data/bundler/lib/bundler/templates/Executable.bundler +6 -11
  166. data/bundler/lib/bundler/templates/Executable.standalone +4 -4
  167. data/bundler/lib/bundler/templates/Gemfile +0 -2
  168. data/bundler/lib/bundler/templates/newgem/Cargo.toml.tt +7 -0
  169. data/bundler/lib/bundler/templates/newgem/Gemfile.tt +8 -2
  170. data/bundler/lib/bundler/templates/newgem/README.md.tt +7 -11
  171. data/bundler/lib/bundler/templates/newgem/Rakefile.tt +27 -3
  172. data/bundler/lib/bundler/templates/newgem/circleci/config.yml.tt +12 -0
  173. data/bundler/lib/bundler/templates/newgem/ext/newgem/Cargo.toml.tt +15 -0
  174. data/bundler/lib/bundler/templates/newgem/ext/newgem/extconf-rust.rb.tt +6 -0
  175. data/bundler/lib/bundler/templates/newgem/ext/newgem/src/lib.rs.tt +12 -0
  176. data/bundler/lib/bundler/templates/newgem/github/workflows/main.yml.tt +13 -3
  177. data/bundler/lib/bundler/templates/newgem/gitignore.tt +3 -0
  178. data/bundler/lib/bundler/templates/newgem/gitlab-ci.yml.tt +13 -4
  179. data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +22 -16
  180. data/bundler/lib/bundler/templates/newgem/sig/newgem.rbs.tt +8 -0
  181. data/bundler/lib/bundler/templates/newgem/standard.yml.tt +3 -0
  182. data/bundler/lib/bundler/templates/newgem/test/minitest/{newgem_test.rb.tt → test_newgem.rb.tt} +1 -1
  183. data/bundler/lib/bundler/ui/shell.rb +36 -13
  184. data/bundler/lib/bundler/ui/silent.rb +21 -5
  185. data/bundler/lib/bundler/uri_normalizer.rb +23 -0
  186. data/bundler/lib/bundler/vendor/.document +1 -0
  187. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb +3 -3
  188. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/wrapper.rb +0 -1
  189. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +3 -1
  190. data/bundler/lib/bundler/vendor/fileutils/lib/fileutils.rb +1350 -408
  191. data/bundler/lib/bundler/vendor/net-http-persistent/README.rdoc +1 -1
  192. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +1 -1
  193. data/bundler/lib/bundler/vendor/pub_grub/LICENSE.txt +21 -0
  194. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/assignment.rb +20 -0
  195. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/basic_package_source.rb +189 -0
  196. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/failure_writer.rb +182 -0
  197. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/incompatibility.rb +150 -0
  198. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/package.rb +43 -0
  199. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/partial_solution.rb +121 -0
  200. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/rubygems.rb +45 -0
  201. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/solve_failure.rb +19 -0
  202. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/static_package_source.rb +60 -0
  203. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/term.rb +105 -0
  204. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version.rb +3 -0
  205. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_constraint.rb +129 -0
  206. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_range.rb +411 -0
  207. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_solver.rb +243 -0
  208. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_union.rb +178 -0
  209. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub.rb +31 -0
  210. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/file_manipulation.rb +6 -6
  211. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/inject_into_file.rb +1 -2
  212. data/bundler/lib/bundler/vendor/thor/lib/thor/actions.rb +6 -2
  213. data/bundler/lib/bundler/vendor/thor/lib/thor/core_ext/hash_with_indifferent_access.rb +6 -0
  214. data/bundler/lib/bundler/vendor/thor/lib/thor/error.rb +9 -4
  215. data/bundler/lib/bundler/vendor/thor/lib/thor/parser/options.rb +19 -1
  216. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +23 -5
  217. data/bundler/lib/bundler/vendor/thor/lib/thor/shell.rb +1 -1
  218. data/bundler/lib/bundler/vendor/thor/lib/thor/util.rb +1 -1
  219. data/bundler/lib/bundler/vendor/thor/lib/thor/version.rb +1 -1
  220. data/bundler/lib/bundler/vendor/tsort/LICENSE.txt +22 -0
  221. data/bundler/lib/bundler/vendor/tsort/lib/tsort.rb +452 -0
  222. data/bundler/lib/bundler/vendor/uri/lib/uri/common.rb +76 -91
  223. data/bundler/lib/bundler/vendor/uri/lib/uri/file.rb +7 -1
  224. data/bundler/lib/bundler/vendor/uri/lib/uri/ftp.rb +2 -2
  225. data/bundler/lib/bundler/vendor/uri/lib/uri/generic.rb +32 -13
  226. data/bundler/lib/bundler/vendor/uri/lib/uri/http.rb +40 -3
  227. data/bundler/lib/bundler/vendor/uri/lib/uri/https.rb +2 -2
  228. data/bundler/lib/bundler/vendor/uri/lib/uri/ldap.rb +2 -2
  229. data/bundler/lib/bundler/vendor/uri/lib/uri/ldaps.rb +2 -1
  230. data/bundler/lib/bundler/vendor/uri/lib/uri/mailto.rb +2 -3
  231. data/bundler/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb +14 -21
  232. data/bundler/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +11 -17
  233. data/bundler/lib/bundler/vendor/uri/lib/uri/version.rb +1 -1
  234. data/bundler/lib/bundler/vendor/uri/lib/uri/ws.rb +83 -0
  235. data/bundler/lib/bundler/vendor/uri/lib/uri/wss.rb +23 -0
  236. data/bundler/lib/bundler/vendor/uri/lib/uri.rb +3 -3
  237. data/bundler/lib/bundler/vendored_persistent.rb +1 -33
  238. data/bundler/lib/bundler/{vendored_molinillo.rb → vendored_pub_grub.rb} +1 -1
  239. data/bundler/lib/bundler/{vendored_tmpdir.rb → vendored_tsort.rb} +1 -1
  240. data/bundler/lib/bundler/version.rb +5 -1
  241. data/bundler/lib/bundler/worker.rb +5 -7
  242. data/bundler/lib/bundler.rb +50 -77
  243. data/hide_lib_for_update/note.txt +0 -4
  244. data/lib/rubygems/available_set.rb +3 -3
  245. data/lib/rubygems/basic_specification.rb +12 -12
  246. data/lib/rubygems/bundler_version_finder.rb +14 -46
  247. data/lib/rubygems/command.rb +47 -39
  248. data/lib/rubygems/command_manager.rb +34 -13
  249. data/lib/rubygems/commands/build_command.rb +11 -8
  250. data/lib/rubygems/commands/cert_command.rb +39 -39
  251. data/lib/rubygems/commands/check_command.rb +20 -20
  252. data/lib/rubygems/commands/cleanup_command.rb +23 -23
  253. data/lib/rubygems/commands/contents_command.rb +13 -13
  254. data/lib/rubygems/commands/dependency_command.rb +35 -45
  255. data/lib/rubygems/commands/environment_command.rb +10 -7
  256. data/lib/rubygems/commands/exec_command.rb +248 -0
  257. data/lib/rubygems/commands/fetch_command.rb +32 -13
  258. data/lib/rubygems/commands/generate_index_command.rb +17 -17
  259. data/lib/rubygems/commands/help_command.rb +6 -6
  260. data/lib/rubygems/commands/info_command.rb +3 -3
  261. data/lib/rubygems/commands/install_command.rb +31 -24
  262. data/lib/rubygems/commands/list_command.rb +4 -4
  263. data/lib/rubygems/commands/lock_command.rb +4 -4
  264. data/lib/rubygems/commands/mirror_command.rb +3 -3
  265. data/lib/rubygems/commands/open_command.rb +9 -9
  266. data/lib/rubygems/commands/outdated_command.rb +5 -5
  267. data/lib/rubygems/commands/owner_command.rb +17 -12
  268. data/lib/rubygems/commands/pristine_command.rb +64 -49
  269. data/lib/rubygems/commands/push_command.rb +16 -16
  270. data/lib/rubygems/commands/query_command.rb +9 -9
  271. data/lib/rubygems/commands/rdoc_command.rb +26 -25
  272. data/lib/rubygems/commands/search_command.rb +4 -4
  273. data/lib/rubygems/commands/server_command.rb +16 -79
  274. data/lib/rubygems/commands/setup_command.rb +172 -173
  275. data/lib/rubygems/commands/signin_command.rb +9 -9
  276. data/lib/rubygems/commands/signout_command.rb +7 -7
  277. data/lib/rubygems/commands/sources_command.rb +22 -22
  278. data/lib/rubygems/commands/specification_command.rb +18 -18
  279. data/lib/rubygems/commands/stale_command.rb +2 -2
  280. data/lib/rubygems/commands/uninstall_command.rb +43 -40
  281. data/lib/rubygems/commands/unpack_command.rb +13 -13
  282. data/lib/rubygems/commands/update_command.rb +61 -72
  283. data/lib/rubygems/commands/which_command.rb +7 -7
  284. data/lib/rubygems/commands/yank_command.rb +11 -11
  285. data/lib/rubygems/compatibility.rb +4 -2
  286. data/lib/rubygems/config_file.rb +58 -25
  287. data/lib/rubygems/core_ext/kernel_gem.rb +1 -6
  288. data/lib/rubygems/core_ext/kernel_require.rb +108 -115
  289. data/lib/rubygems/core_ext/kernel_warn.rb +33 -37
  290. data/lib/rubygems/core_ext/tcpsocket_init.rb +1 -1
  291. data/lib/rubygems/defaults.rb +32 -36
  292. data/lib/rubygems/dependency.rb +20 -17
  293. data/lib/rubygems/dependency_installer.rb +37 -37
  294. data/lib/rubygems/dependency_list.rb +7 -7
  295. data/lib/rubygems/deprecate.rb +55 -8
  296. data/lib/rubygems/doctor.rb +21 -21
  297. data/lib/rubygems/errors.rb +3 -6
  298. data/lib/rubygems/exceptions.rb +35 -7
  299. data/lib/rubygems/ext/build_error.rb +1 -1
  300. data/lib/rubygems/ext/builder.rb +51 -22
  301. data/lib/rubygems/ext/cargo_builder/link_flag_converter.rb +27 -0
  302. data/lib/rubygems/ext/cargo_builder.rb +360 -0
  303. data/lib/rubygems/ext/cmake_builder.rb +2 -2
  304. data/lib/rubygems/ext/configure_builder.rb +1 -1
  305. data/lib/rubygems/ext/ext_conf_builder.rb +35 -59
  306. data/lib/rubygems/ext/rake_builder.rb +3 -3
  307. data/lib/rubygems/ext.rb +7 -6
  308. data/lib/rubygems/gem_runner.rb +12 -16
  309. data/lib/rubygems/gemcutter_utilities.rb +60 -21
  310. data/lib/rubygems/indexer.rb +30 -28
  311. data/lib/rubygems/install_default_message.rb +2 -2
  312. data/lib/rubygems/install_message.rb +2 -2
  313. data/lib/rubygems/install_update_options.rb +70 -61
  314. data/lib/rubygems/installer.rb +135 -87
  315. data/lib/rubygems/installer_uninstaller_utils.rb +2 -2
  316. data/lib/rubygems/local_remote_options.rb +22 -24
  317. data/lib/rubygems/mock_gem_ui.rb +2 -2
  318. data/lib/rubygems/name_tuple.rb +6 -7
  319. data/lib/rubygems/optparse/.document +1 -0
  320. data/lib/rubygems/optparse/COPYING +56 -0
  321. data/lib/rubygems/optparse/lib/optionparser.rb +2 -0
  322. data/lib/rubygems/optparse/lib/optparse/ac.rb +54 -0
  323. data/lib/rubygems/optparse/lib/optparse/date.rb +18 -0
  324. data/lib/rubygems/optparse/lib/optparse/kwargs.rb +22 -0
  325. data/lib/rubygems/optparse/lib/optparse/shellwords.rb +7 -0
  326. data/lib/rubygems/optparse/lib/optparse/time.rb +11 -0
  327. data/lib/rubygems/optparse/lib/optparse/uri.rb +7 -0
  328. data/lib/rubygems/optparse/lib/optparse/version.rb +71 -0
  329. data/lib/rubygems/optparse/lib/optparse.rb +2308 -0
  330. data/lib/rubygems/optparse.rb +3 -0
  331. data/lib/rubygems/package/file_source.rb +2 -2
  332. data/lib/rubygems/package/old.rb +9 -9
  333. data/lib/rubygems/package/tar_header.rb +62 -62
  334. data/lib/rubygems/package/tar_reader/entry.rb +90 -9
  335. data/lib/rubygems/package/tar_reader.rb +1 -29
  336. data/lib/rubygems/package/tar_writer.rb +7 -7
  337. data/lib/rubygems/package.rb +77 -60
  338. data/lib/rubygems/package_task.rb +4 -4
  339. data/lib/rubygems/path_support.rb +1 -6
  340. data/lib/rubygems/platform.rb +94 -61
  341. data/lib/rubygems/psych_tree.rb +1 -1
  342. data/lib/rubygems/query_utils.rb +49 -51
  343. data/lib/rubygems/rdoc.rb +2 -2
  344. data/lib/rubygems/remote_fetcher.rb +27 -27
  345. data/lib/rubygems/request/connection_pools.rb +4 -4
  346. data/lib/rubygems/request/http_pool.rb +1 -1
  347. data/lib/rubygems/request.rb +24 -24
  348. data/lib/rubygems/request_set/gem_dependency_api.rb +122 -123
  349. data/lib/rubygems/request_set/lockfile/parser.rb +26 -26
  350. data/lib/rubygems/request_set/lockfile/tokenizer.rb +4 -4
  351. data/lib/rubygems/request_set/lockfile.rb +9 -9
  352. data/lib/rubygems/request_set.rb +18 -18
  353. data/lib/rubygems/requirement.rb +15 -15
  354. data/lib/rubygems/resolver/activation_request.rb +3 -3
  355. data/lib/rubygems/resolver/api_set.rb +4 -4
  356. data/lib/rubygems/resolver/api_specification.rb +6 -6
  357. data/lib/rubygems/resolver/best_set.rb +5 -5
  358. data/lib/rubygems/resolver/conflict.rb +10 -10
  359. data/lib/rubygems/resolver/dependency_request.rb +2 -2
  360. data/lib/rubygems/resolver/git_set.rb +2 -2
  361. data/lib/rubygems/resolver/git_specification.rb +6 -6
  362. data/lib/rubygems/resolver/index_set.rb +3 -3
  363. data/lib/rubygems/resolver/index_specification.rb +6 -5
  364. data/lib/rubygems/resolver/installed_specification.rb +4 -4
  365. data/lib/rubygems/resolver/installer_set.rb +21 -26
  366. data/lib/rubygems/resolver/local_specification.rb +2 -2
  367. data/lib/rubygems/resolver/lock_set.rb +4 -4
  368. data/lib/rubygems/resolver/lock_specification.rb +4 -4
  369. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph.rb +3 -3
  370. data/lib/rubygems/resolver/molinillo/lib/molinillo/errors.rb +32 -26
  371. data/lib/rubygems/resolver/molinillo/lib/molinillo/gem_metadata.rb +1 -1
  372. data/lib/rubygems/resolver/molinillo.rb +1 -1
  373. data/lib/rubygems/resolver/specification.rb +1 -1
  374. data/lib/rubygems/resolver/stats.rb +1 -1
  375. data/lib/rubygems/resolver/vendor_set.rb +1 -1
  376. data/lib/rubygems/resolver/vendor_specification.rb +3 -3
  377. data/lib/rubygems/resolver.rb +40 -40
  378. data/lib/rubygems/s3_uri_signer.rb +6 -6
  379. data/lib/rubygems/safe_yaml.rb +10 -10
  380. data/lib/rubygems/security/policies.rb +47 -47
  381. data/lib/rubygems/security/policy.rb +19 -21
  382. data/lib/rubygems/security/signer.rb +5 -5
  383. data/lib/rubygems/security/trust_dir.rb +4 -4
  384. data/lib/rubygems/security.rb +37 -43
  385. data/lib/rubygems/security_option.rb +7 -7
  386. data/lib/rubygems/source/git.rb +25 -24
  387. data/lib/rubygems/source/installed.rb +1 -1
  388. data/lib/rubygems/source/local.rb +2 -2
  389. data/lib/rubygems/source/specific_file.rb +1 -1
  390. data/lib/rubygems/source.rb +27 -32
  391. data/lib/rubygems/source_list.rb +5 -9
  392. data/lib/rubygems/spec_fetcher.rb +37 -37
  393. data/lib/rubygems/specification.rb +265 -211
  394. data/lib/rubygems/specification_policy.rb +49 -30
  395. data/lib/rubygems/stub_specification.rb +24 -27
  396. data/lib/rubygems/text.rb +22 -21
  397. data/lib/rubygems/tsort/.document +1 -0
  398. data/lib/rubygems/tsort/LICENSE.txt +22 -0
  399. data/lib/rubygems/tsort/lib/tsort.rb +452 -0
  400. data/lib/rubygems/tsort.rb +3 -0
  401. data/lib/rubygems/uninstaller.rb +29 -26
  402. data/lib/rubygems/unknown_command_spell_checker.rb +21 -0
  403. data/lib/rubygems/update_suggestion.rb +69 -0
  404. data/lib/rubygems/uri.rb +45 -30
  405. data/lib/rubygems/uri_formatter.rb +1 -1
  406. data/lib/rubygems/user_interaction.rb +42 -28
  407. data/lib/rubygems/util/licenses.rb +4 -2
  408. data/lib/rubygems/util.rb +12 -16
  409. data/lib/rubygems/validator.rb +6 -6
  410. data/lib/rubygems/version.rb +28 -17
  411. data/lib/rubygems/version_option.rb +5 -5
  412. data/lib/rubygems.rb +129 -117
  413. data/rubygems-update.gemspec +3 -3
  414. data/setup.rb +11 -16
  415. data/test/rubygems/alternate_cert.pem +14 -14
  416. data/test/rubygems/alternate_cert_32.pem +15 -15
  417. data/test/rubygems/alternate_key.pem +25 -25
  418. data/test/rubygems/bundler_test_gem.rb +419 -0
  419. data/test/rubygems/child_cert.pem +15 -16
  420. data/test/rubygems/child_cert_32.pem +15 -16
  421. data/test/rubygems/child_key.pem +25 -25
  422. data/test/rubygems/data/excon-0.7.7.gemspec.rz +0 -0
  423. data/test/rubygems/data/pry-0.4.7.gemspec.rz +0 -0
  424. data/test/rubygems/encrypted_private_key.pem +26 -26
  425. data/test/rubygems/expired_cert.pem +15 -15
  426. data/test/rubygems/future_cert.pem +15 -15
  427. data/test/rubygems/future_cert_32.pem +15 -15
  428. data/test/rubygems/grandchild_cert.pem +15 -16
  429. data/test/rubygems/grandchild_cert_32.pem +15 -16
  430. data/test/rubygems/grandchild_key.pem +25 -25
  431. data/test/rubygems/helper.rb +237 -207
  432. data/test/rubygems/installer_test_case.rb +13 -13
  433. data/test/rubygems/invalid_issuer_cert.pem +16 -16
  434. data/test/rubygems/invalid_issuer_cert_32.pem +16 -16
  435. data/test/rubygems/invalid_key.pem +25 -25
  436. data/test/rubygems/invalid_signer_cert.pem +15 -15
  437. data/test/rubygems/invalid_signer_cert_32.pem +15 -15
  438. data/test/rubygems/invalidchild_cert.pem +15 -16
  439. data/test/rubygems/invalidchild_cert_32.pem +15 -16
  440. data/test/rubygems/invalidchild_key.pem +25 -25
  441. data/test/rubygems/package/tar_test_case.rb +52 -17
  442. data/test/rubygems/packages/Bluebie-legs-0.6.2.gem +0 -0
  443. data/test/rubygems/plugin/exception/rubygems_plugin.rb +1 -1
  444. data/test/rubygems/plugin/standarderror/rubygems_plugin.rb +1 -1
  445. data/test/rubygems/private_key.pem +25 -25
  446. data/test/rubygems/public_cert.pem +16 -16
  447. data/test/rubygems/public_cert_32.pem +15 -15
  448. data/test/rubygems/public_key.pem +7 -7
  449. data/test/rubygems/rubygems_plugin.rb +2 -2
  450. data/test/rubygems/simple_gem.rb +1 -1
  451. data/test/rubygems/specifications/rubyforge-0.0.1.gemspec +4 -4
  452. data/test/rubygems/test_bundled_ca.rb +11 -11
  453. data/test/rubygems/test_config.rb +5 -5
  454. data/test/rubygems/test_deprecate.rb +3 -3
  455. data/test/rubygems/test_exit.rb +17 -0
  456. data/test/rubygems/test_gem.rb +367 -757
  457. data/test/rubygems/test_gem_available_set.rb +21 -21
  458. data/test/rubygems/test_gem_bundler_version_finder.rb +27 -47
  459. data/test/rubygems/test_gem_command.rb +45 -45
  460. data/test/rubygems/test_gem_command_manager.rb +124 -27
  461. data/test/rubygems/test_gem_commands_build_command.rb +73 -63
  462. data/test/rubygems/test_gem_commands_cert_command.rb +105 -107
  463. data/test/rubygems/test_gem_commands_check_command.rb +4 -4
  464. data/test/rubygems/test_gem_commands_cleanup_command.rb +40 -40
  465. data/test/rubygems/test_gem_commands_contents_command.rb +28 -28
  466. data/test/rubygems/test_gem_commands_dependency_command.rb +36 -36
  467. data/test/rubygems/test_gem_commands_environment_command.rb +38 -14
  468. data/test/rubygems/test_gem_commands_exec_command.rb +851 -0
  469. data/test/rubygems/test_gem_commands_fetch_command.rb +159 -26
  470. data/test/rubygems/test_gem_commands_generate_index_command.rb +7 -7
  471. data/test/rubygems/test_gem_commands_help_command.rb +13 -13
  472. data/test/rubygems/test_gem_commands_info_command.rb +28 -2
  473. data/test/rubygems/test_gem_commands_install_command.rb +200 -132
  474. data/test/rubygems/test_gem_commands_list_command.rb +4 -4
  475. data/test/rubygems/test_gem_commands_lock_command.rb +10 -10
  476. data/test/rubygems/test_gem_commands_mirror.rb +2 -2
  477. data/test/rubygems/test_gem_commands_open_command.rb +5 -5
  478. data/test/rubygems/test_gem_commands_outdated_command.rb +9 -9
  479. data/test/rubygems/test_gem_commands_owner_command.rb +126 -45
  480. data/test/rubygems/test_gem_commands_pristine_command.rb +141 -92
  481. data/test/rubygems/test_gem_commands_push_command.rb +85 -59
  482. data/test/rubygems/test_gem_commands_query_command.rb +73 -73
  483. data/test/rubygems/test_gem_commands_search_command.rb +2 -2
  484. data/test/rubygems/test_gem_commands_server_command.rb +6 -48
  485. data/test/rubygems/test_gem_commands_setup_command.rb +169 -92
  486. data/test/rubygems/test_gem_commands_signin_command.rb +154 -26
  487. data/test/rubygems/test_gem_commands_signout_command.rb +3 -3
  488. data/test/rubygems/test_gem_commands_sources_command.rb +74 -25
  489. data/test/rubygems/test_gem_commands_specification_command.rb +32 -32
  490. data/test/rubygems/test_gem_commands_stale_command.rb +4 -4
  491. data/test/rubygems/test_gem_commands_uninstall_command.rb +99 -82
  492. data/test/rubygems/test_gem_commands_unpack_command.rb +31 -31
  493. data/test/rubygems/test_gem_commands_update_command.rb +202 -91
  494. data/test/rubygems/test_gem_commands_which_command.rb +6 -6
  495. data/test/rubygems/test_gem_commands_yank_command.rb +43 -43
  496. data/test/rubygems/test_gem_config_file.rb +93 -81
  497. data/test/rubygems/test_gem_dependency.rb +78 -80
  498. data/test/rubygems/test_gem_dependency_installer.rb +165 -165
  499. data/test/rubygems/test_gem_dependency_list.rb +47 -47
  500. data/test/rubygems/test_gem_dependency_resolution_error.rb +4 -4
  501. data/test/rubygems/test_gem_doctor.rb +26 -26
  502. data/test/rubygems/test_gem_ext_builder.rb +60 -62
  503. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/.gitignore +1 -0
  504. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/custom_name.gemspec +8 -0
  505. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/Cargo.lock +233 -0
  506. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/Cargo.toml +10 -0
  507. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/src/lib.rs +27 -0
  508. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/lib/custom_name.rb +1 -0
  509. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/.gitignore +1 -0
  510. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.lock +247 -0
  511. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.toml +10 -0
  512. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/rust_ruby_example.gemspec +8 -0
  513. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/src/lib.rs +51 -0
  514. data/test/rubygems/test_gem_ext_cargo_builder.rb +166 -0
  515. data/test/rubygems/test_gem_ext_cargo_builder_link_flag_converter.rb +33 -0
  516. data/test/rubygems/test_gem_ext_cargo_builder_unit.rb +60 -0
  517. data/test/rubygems/test_gem_ext_cmake_builder.rb +17 -15
  518. data/test/rubygems/test_gem_ext_configure_builder.rb +13 -13
  519. data/test/rubygems/test_gem_ext_ext_conf_builder.rb +53 -50
  520. data/test/rubygems/test_gem_ext_rake_builder.rb +15 -15
  521. data/test/rubygems/test_gem_gem_runner.rb +13 -8
  522. data/test/rubygems/test_gem_gemcutter_utilities.rb +71 -65
  523. data/test/rubygems/test_gem_impossible_dependencies_error.rb +4 -4
  524. data/test/rubygems/test_gem_indexer.rb +90 -67
  525. data/test/rubygems/test_gem_install_update_options.rb +18 -18
  526. data/test/rubygems/test_gem_installer.rb +511 -327
  527. data/test/rubygems/test_gem_local_remote_options.rb +10 -10
  528. data/test/rubygems/test_gem_name_tuple.rb +4 -4
  529. data/test/rubygems/test_gem_package.rb +246 -236
  530. data/test/rubygems/test_gem_package_old.rb +13 -13
  531. data/test/rubygems/test_gem_package_tar_header.rb +47 -47
  532. data/test/rubygems/test_gem_package_tar_reader.rb +55 -8
  533. data/test/rubygems/test_gem_package_tar_reader_entry.rb +161 -16
  534. data/test/rubygems/test_gem_package_tar_writer.rb +76 -76
  535. data/test/rubygems/test_gem_package_task.rb +18 -18
  536. data/test/rubygems/test_gem_path_support.rb +15 -19
  537. data/test/rubygems/test_gem_platform.rb +335 -214
  538. data/test/rubygems/test_gem_rdoc.rb +14 -14
  539. data/test/rubygems/test_gem_remote_fetcher.rb +169 -154
  540. data/test/rubygems/test_gem_request.rb +65 -59
  541. data/test/rubygems/test_gem_request_connection_pools.rb +29 -29
  542. data/test/rubygems/test_gem_request_set.rb +100 -100
  543. data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +209 -211
  544. data/test/rubygems/test_gem_request_set_lockfile.rb +86 -86
  545. data/test/rubygems/test_gem_request_set_lockfile_parser.rb +58 -58
  546. data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +62 -62
  547. data/test/rubygems/test_gem_requirement.rb +47 -42
  548. data/test/rubygems/test_gem_resolver.rb +173 -106
  549. data/test/rubygems/test_gem_resolver_activation_request.rb +6 -6
  550. data/test/rubygems/test_gem_resolver_api_set.rb +33 -33
  551. data/test/rubygems/test_gem_resolver_api_specification.rb +47 -47
  552. data/test/rubygems/test_gem_resolver_best_set.rb +22 -22
  553. data/test/rubygems/test_gem_resolver_composed_set.rb +1 -1
  554. data/test/rubygems/test_gem_resolver_conflict.rb +12 -12
  555. data/test/rubygems/test_gem_resolver_dependency_request.rb +15 -15
  556. data/test/rubygems/test_gem_resolver_git_set.rb +21 -21
  557. data/test/rubygems/test_gem_resolver_git_specification.rb +21 -21
  558. data/test/rubygems/test_gem_resolver_index_set.rb +12 -12
  559. data/test/rubygems/test_gem_resolver_index_specification.rb +16 -16
  560. data/test/rubygems/test_gem_resolver_installed_specification.rb +5 -5
  561. data/test/rubygems/test_gem_resolver_installer_set.rb +79 -35
  562. data/test/rubygems/test_gem_resolver_local_specification.rb +7 -7
  563. data/test/rubygems/test_gem_resolver_lock_set.rb +12 -12
  564. data/test/rubygems/test_gem_resolver_lock_specification.rb +17 -17
  565. data/test/rubygems/test_gem_resolver_requirement_list.rb +1 -1
  566. data/test/rubygems/test_gem_resolver_specification.rb +8 -8
  567. data/test/rubygems/test_gem_resolver_vendor_set.rb +6 -6
  568. data/test/rubygems/test_gem_resolver_vendor_specification.rb +10 -10
  569. data/test/rubygems/test_gem_security.rb +69 -69
  570. data/test/rubygems/test_gem_security_policy.rb +72 -72
  571. data/test/rubygems/test_gem_security_signer.rb +34 -34
  572. data/test/rubygems/test_gem_security_trust_dir.rb +6 -6
  573. data/test/rubygems/test_gem_silent_ui.rb +38 -32
  574. data/test/rubygems/test_gem_source.rb +44 -44
  575. data/test/rubygems/test_gem_source_fetch_problem.rb +9 -9
  576. data/test/rubygems/test_gem_source_git.rb +69 -62
  577. data/test/rubygems/test_gem_source_installed.rb +16 -16
  578. data/test/rubygems/test_gem_source_list.rb +5 -5
  579. data/test/rubygems/test_gem_source_local.rb +14 -14
  580. data/test/rubygems/test_gem_source_lock.rb +31 -31
  581. data/test/rubygems/test_gem_source_specific_file.rb +17 -17
  582. data/test/rubygems/test_gem_source_subpath_problem.rb +7 -7
  583. data/test/rubygems/test_gem_source_vendor.rb +13 -13
  584. data/test/rubygems/test_gem_spec_fetcher.rb +72 -72
  585. data/test/rubygems/test_gem_specification.rb +560 -493
  586. data/test/rubygems/test_gem_stream_ui.rb +20 -20
  587. data/test/rubygems/test_gem_stub_specification.rb +32 -48
  588. data/test/rubygems/test_gem_text.rb +7 -1
  589. data/test/rubygems/test_gem_uninstaller.rb +113 -113
  590. data/test/rubygems/test_gem_unsatisfiable_dependency_error.rb +3 -3
  591. data/test/rubygems/test_gem_update_suggestion.rb +208 -0
  592. data/test/rubygems/test_gem_uri.rb +4 -4
  593. data/test/rubygems/test_gem_uri_formatter.rb +14 -14
  594. data/test/rubygems/test_gem_util.rb +23 -23
  595. data/test/rubygems/test_gem_validator.rb +8 -8
  596. data/test/rubygems/test_gem_version.rb +27 -16
  597. data/test/rubygems/test_gem_version_option.rb +15 -15
  598. data/test/rubygems/test_kernel.rb +42 -60
  599. data/test/rubygems/test_project_sanity.rb +2 -2
  600. data/test/rubygems/test_remote_fetch_error.rb +6 -6
  601. data/test/rubygems/test_require.rb +132 -174
  602. data/test/rubygems/test_rubygems.rb +42 -12
  603. data/test/rubygems/utilities.rb +59 -37
  604. data/test/rubygems/wrong_key_cert.pem +15 -15
  605. data/test/rubygems/wrong_key_cert_32.pem +15 -15
  606. data/test/test_changelog_generator.rb +1 -0
  607. metadata +97 -41
  608. data/bundler/lib/bundler/dep_proxy.rb +0 -55
  609. data/bundler/lib/bundler/gemdeps.rb +0 -29
  610. data/bundler/lib/bundler/psyched_yaml.rb +0 -22
  611. data/bundler/lib/bundler/templates/gems.rb +0 -8
  612. data/bundler/lib/bundler/templates/newgem/travis.yml.tt +0 -6
  613. data/bundler/lib/bundler/vendor/molinillo/LICENSE +0 -9
  614. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/delegates/resolution_state.rb +0 -57
  615. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/delegates/specification_provider.rb +0 -88
  616. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/action.rb +0 -36
  617. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +0 -66
  618. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +0 -62
  619. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +0 -63
  620. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +0 -61
  621. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/log.rb +0 -126
  622. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/set_payload.rb +0 -46
  623. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb +0 -36
  624. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb +0 -164
  625. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb +0 -255
  626. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +0 -143
  627. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb +0 -6
  628. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/modules/specification_provider.rb +0 -112
  629. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/modules/ui.rb +0 -67
  630. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +0 -839
  631. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolver.rb +0 -46
  632. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/state.rb +0 -58
  633. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo.rb +0 -11
  634. data/bundler/lib/bundler/vendor/tmpdir/lib/tmpdir.rb +0 -154
  635. data/bundler/lib/bundler/version_ranges.rb +0 -122
  636. data/lib/rubygems/psych_additions.rb +0 -10
  637. data/lib/rubygems/server.rb +0 -882
  638. data/test/rubygems/bogussources.rb +0 -9
  639. data/test/rubygems/data/null-type.gemspec.rz +0 -0
  640. data/test/rubygems/test_gem_server.rb +0 -608
  641. /data/bundler/lib/bundler/templates/newgem/ext/newgem/{extconf.rb.tt → extconf-c.rb.tt} +0 -0
@@ -5,7 +5,7 @@
5
5
  # See LICENSE.txt for permissions.
6
6
  #++
7
7
 
8
- require 'monitor'
8
+ require "monitor"
9
9
 
10
10
  module Kernel
11
11
 
@@ -13,12 +13,12 @@ module Kernel
13
13
 
14
14
  # Make sure we have a reference to Ruby's original Kernel#require
15
15
  unless defined?(gem_original_require)
16
+ # :stopdoc:
16
17
  alias gem_original_require require
17
18
  private :gem_original_require
19
+ # :startdoc:
18
20
  end
19
21
 
20
- file = Gem::KERNEL_WARN_IGNORES_INTERNAL_ENTRIES ? "<internal:#{__FILE__}>" : __FILE__
21
- module_eval <<'RUBY', file, __LINE__ + 1
22
22
  ##
23
23
  # When RubyGems is required, Kernel#require is replaced with our own which
24
24
  # is capable of loading gems on demand.
@@ -33,142 +33,135 @@ module Kernel
33
33
  # The normal <tt>require</tt> functionality of returning false if
34
34
  # that file has already been loaded is preserved.
35
35
 
36
- def require(path)
37
- if RUBYGEMS_ACTIVATION_MONITOR.respond_to?(:mon_owned?)
38
- monitor_owned = RUBYGEMS_ACTIVATION_MONITOR.mon_owned?
39
- end
40
- RUBYGEMS_ACTIVATION_MONITOR.enter
41
-
42
- path = path.to_path if path.respond_to? :to_path
43
-
44
- if spec = Gem.find_unresolved_default_spec(path)
45
- # Ensure -I beats a default gem
46
- resolved_path = begin
47
- rp = nil
48
- load_path_check_index = Gem.load_path_insert_index - Gem.activated_gem_paths
49
- Gem.suffixes.each do |s|
50
- $LOAD_PATH[0...load_path_check_index].each do |lp|
51
- safe_lp = lp.dup.tap(&Gem::UNTAINT)
52
- begin
53
- if File.symlink? safe_lp # for backward compatibility
54
- next
36
+ def require(path) # :doc:
37
+ return gem_original_require(path) unless Gem.discover_gems_on_require
38
+
39
+ begin
40
+ RUBYGEMS_ACTIVATION_MONITOR.enter
41
+
42
+ path = path.to_path if path.respond_to? :to_path
43
+
44
+ if spec = Gem.find_unresolved_default_spec(path)
45
+ # Ensure -I beats a default gem
46
+ resolved_path = begin
47
+ rp = nil
48
+ load_path_check_index = Gem.load_path_insert_index - Gem.activated_gem_paths
49
+ Gem.suffixes.each do |s|
50
+ $LOAD_PATH[0...load_path_check_index].each do |lp|
51
+ safe_lp = lp.dup.tap(&Gem::UNTAINT)
52
+ begin
53
+ if File.symlink? safe_lp # for backward compatibility
54
+ next
55
+ end
56
+ rescue SecurityError
57
+ RUBYGEMS_ACTIVATION_MONITOR.exit
58
+ raise
55
59
  end
56
- rescue SecurityError
57
- RUBYGEMS_ACTIVATION_MONITOR.exit
58
- raise
59
- end
60
60
 
61
- full_path = File.expand_path(File.join(safe_lp, "#{path}#{s}"))
62
- if File.file?(full_path)
63
- rp = full_path
64
- break
61
+ full_path = File.expand_path(File.join(safe_lp, "#{path}#{s}"))
62
+ if File.file?(full_path)
63
+ rp = full_path
64
+ break
65
+ end
65
66
  end
67
+ break if rp
66
68
  end
67
- break if rp
69
+ rp
68
70
  end
69
- rp
70
- end
71
-
72
- begin
73
- Kernel.send(:gem, spec.name, Gem::Requirement.default_prerelease)
74
- rescue Exception
75
- RUBYGEMS_ACTIVATION_MONITOR.exit
76
- raise
77
- end unless resolved_path
78
- end
79
71
 
80
- # If there are no unresolved deps, then we can use just try
81
- # normal require handle loading a gem from the rescue below.
82
-
83
- if Gem::Specification.unresolved_deps.empty?
84
- RUBYGEMS_ACTIVATION_MONITOR.exit
85
- return gem_original_require(path)
86
- end
87
-
88
- # If +path+ is for a gem that has already been loaded, don't
89
- # bother trying to find it in an unresolved gem, just go straight
90
- # to normal require.
91
- #--
92
- # TODO request access to the C implementation of this to speed up RubyGems
93
-
94
- if Gem::Specification.find_active_stub_by_path(path)
95
- RUBYGEMS_ACTIVATION_MONITOR.exit
96
- return gem_original_require(path)
97
- end
98
-
99
- # Attempt to find +path+ in any unresolved gems...
100
-
101
- found_specs = Gem::Specification.find_in_unresolved path
102
-
103
- # If there are no directly unresolved gems, then try and find +path+
104
- # in any gems that are available via the currently unresolved gems.
105
- # For example, given:
106
- #
107
- # a => b => c => d
108
- #
109
- # If a and b are currently active with c being unresolved and d.rb is
110
- # requested, then find_in_unresolved_tree will find d.rb in d because
111
- # it's a dependency of c.
112
- #
113
- if found_specs.empty?
114
- found_specs = Gem::Specification.find_in_unresolved_tree path
115
-
116
- found_specs.each do |found_spec|
117
- found_spec.activate
72
+ begin
73
+ Kernel.send(:gem, spec.name, Gem::Requirement.default_prerelease)
74
+ rescue Exception
75
+ RUBYGEMS_ACTIVATION_MONITOR.exit
76
+ raise
77
+ end unless resolved_path
118
78
  end
119
79
 
120
- # We found +path+ directly in an unresolved gem. Now we figure out, of
121
- # the possible found specs, which one we should activate.
122
- else
123
-
124
- # Check that all the found specs are just different
125
- # versions of the same gem
126
- names = found_specs.map(&:name).uniq
80
+ # If there are no unresolved deps, then we can use just try
81
+ # normal require handle loading a gem from the rescue below.
127
82
 
128
- if names.size > 1
83
+ if Gem::Specification.unresolved_deps.empty?
129
84
  RUBYGEMS_ACTIVATION_MONITOR.exit
130
- raise Gem::LoadError, "#{path} found in multiple gems: #{names.join ', '}"
85
+ return gem_original_require(path)
131
86
  end
132
87
 
133
- # Ok, now find a gem that has no conflicts, starting
134
- # at the highest version.
135
- valid = found_specs.find {|s| !s.has_conflicts? }
88
+ # If +path+ is for a gem that has already been loaded, don't
89
+ # bother trying to find it in an unresolved gem, just go straight
90
+ # to normal require.
91
+ #--
92
+ # TODO request access to the C implementation of this to speed up RubyGems
136
93
 
137
- unless valid
138
- le = Gem::LoadError.new "unable to find a version of '#{names.first}' to activate"
139
- le.name = names.first
94
+ if Gem::Specification.find_active_stub_by_path(path)
140
95
  RUBYGEMS_ACTIVATION_MONITOR.exit
141
- raise le
96
+ return gem_original_require(path)
142
97
  end
143
98
 
144
- valid.activate
145
- end
99
+ # Attempt to find +path+ in any unresolved gems...
100
+
101
+ found_specs = Gem::Specification.find_in_unresolved path
102
+
103
+ # If there are no directly unresolved gems, then try and find +path+
104
+ # in any gems that are available via the currently unresolved gems.
105
+ # For example, given:
106
+ #
107
+ # a => b => c => d
108
+ #
109
+ # If a and b are currently active with c being unresolved and d.rb is
110
+ # requested, then find_in_unresolved_tree will find d.rb in d because
111
+ # it's a dependency of c.
112
+ #
113
+ if found_specs.empty?
114
+ found_specs = Gem::Specification.find_in_unresolved_tree path
115
+
116
+ found_specs.each do |found_spec|
117
+ found_spec.activate
118
+ end
146
119
 
147
- RUBYGEMS_ACTIVATION_MONITOR.exit
148
- return gem_original_require(path)
149
- rescue LoadError => load_error
150
- RUBYGEMS_ACTIVATION_MONITOR.enter
120
+ # We found +path+ directly in an unresolved gem. Now we figure out, of
121
+ # the possible found specs, which one we should activate.
122
+ else
151
123
 
152
- begin
153
- if load_error.path == path and Gem.try_activate(path)
154
- require_again = true
124
+ # Check that all the found specs are just different
125
+ # versions of the same gem
126
+ names = found_specs.map(&:name).uniq
127
+
128
+ if names.size > 1
129
+ RUBYGEMS_ACTIVATION_MONITOR.exit
130
+ raise Gem::LoadError, "#{path} found in multiple gems: #{names.join ', '}"
131
+ end
132
+
133
+ # Ok, now find a gem that has no conflicts, starting
134
+ # at the highest version.
135
+ valid = found_specs.find {|s| !s.has_conflicts? }
136
+
137
+ unless valid
138
+ le = Gem::LoadError.new "unable to find a version of '#{names.first}' to activate"
139
+ le.name = names.first
140
+ RUBYGEMS_ACTIVATION_MONITOR.exit
141
+ raise le
142
+ end
143
+
144
+ valid.activate
155
145
  end
156
- ensure
157
- RUBYGEMS_ACTIVATION_MONITOR.exit
158
- end
159
146
 
160
- return gem_original_require(path) if require_again
147
+ RUBYGEMS_ACTIVATION_MONITOR.exit
148
+ return gem_original_require(path)
149
+ rescue LoadError => load_error
150
+ if load_error.path == path
151
+ RUBYGEMS_ACTIVATION_MONITOR.enter
152
+
153
+ begin
154
+ require_again = Gem.try_activate(path)
155
+ ensure
156
+ RUBYGEMS_ACTIVATION_MONITOR.exit
157
+ end
161
158
 
162
- raise load_error
163
- ensure
164
- if RUBYGEMS_ACTIVATION_MONITOR.respond_to?(:mon_owned?)
165
- if monitor_owned != (ow = RUBYGEMS_ACTIVATION_MONITOR.mon_owned?)
166
- STDERR.puts [$$, Thread.current, $!, $!.backtrace].inspect if $!
167
- raise "CRITICAL: RUBYGEMS_ACTIVATION_MONITOR.owned?: before #{monitor_owned} -> after #{ow}"
159
+ return gem_original_require(path) if require_again
168
160
  end
161
+
162
+ raise load_error
169
163
  end
170
164
  end
171
- RUBY
172
165
 
173
166
  private :require
174
167
 
@@ -1,54 +1,50 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # `uplevel` keyword argument of Kernel#warn is available since ruby 2.5.
4
- if RUBY_VERSION >= "2.5" && !Gem::KERNEL_WARN_IGNORES_INTERNAL_ENTRIES
3
+ module Kernel
4
+ rubygems_path = "#{__dir__}/" # Frames to be skipped start with this path.
5
5
 
6
- module Kernel
7
- rubygems_path = "#{__dir__}/" # Frames to be skipped start with this path.
6
+ original_warn = instance_method(:warn)
8
7
 
9
- original_warn = instance_method(:warn)
8
+ remove_method :warn
10
9
 
10
+ class << self
11
11
  remove_method :warn
12
+ end
12
13
 
13
- class << self
14
- remove_method :warn
14
+ module_function define_method(:warn) {|*messages, **kw|
15
+ unless uplevel = kw[:uplevel]
16
+ if Gem.java_platform? && RUBY_VERSION < "3.1"
17
+ return original_warn.bind(self).call(*messages)
18
+ else
19
+ return original_warn.bind(self).call(*messages, **kw)
20
+ end
15
21
  end
16
22
 
17
- module_function define_method(:warn) {|*messages, **kw|
18
- unless uplevel = kw[:uplevel]
19
- if Gem.java_platform?
20
- return original_warn.bind(self).call(*messages)
21
- else
22
- return original_warn.bind(self).call(*messages, **kw)
23
+ # Ensure `uplevel` fits a `long`
24
+ uplevel, = [uplevel].pack("l!").unpack("l!")
25
+
26
+ if uplevel >= 0
27
+ start = 0
28
+ while uplevel >= 0
29
+ loc, = caller_locations(start, 1)
30
+ unless loc
31
+ # No more backtrace
32
+ start += uplevel
33
+ break
23
34
  end
24
- end
25
35
 
26
- # Ensure `uplevel` fits a `long`
27
- uplevel, = [uplevel].pack("l!").unpack("l!")
28
-
29
- if uplevel >= 0
30
- start = 0
31
- while uplevel >= 0
32
- loc, = caller_locations(start, 1)
33
- unless loc
34
- # No more backtrace
35
- start += uplevel
36
- break
37
- end
36
+ start += 1
38
37
 
39
- start += 1
40
-
41
- if path = loc.path
42
- unless path.start_with?(rubygems_path) or path.start_with?('<internal:')
43
- # Non-rubygems frames
44
- uplevel -= 1
45
- end
38
+ if path = loc.path
39
+ unless path.start_with?(rubygems_path) || path.start_with?("<internal:")
40
+ # Non-rubygems frames
41
+ uplevel -= 1
46
42
  end
47
43
  end
48
- kw[:uplevel] = start
49
44
  end
45
+ kw[:uplevel] = start
46
+ end
50
47
 
51
- original_warn.bind(self).call(*messages, **kw)
52
- }
53
- end
48
+ original_warn.bind(self).call(*messages, **kw)
49
+ }
54
50
  end
@@ -1,4 +1,4 @@
1
- require 'socket'
1
+ require "socket"
2
2
 
3
3
  module CoreExtensions
4
4
  module TCPSocketExt
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
  module Gem
3
- DEFAULT_HOST = "https://rubygems.org".freeze
3
+ DEFAULT_HOST = "https://rubygems.org"
4
4
 
5
5
  @post_install_hooks ||= []
6
6
  @done_installing_hooks ||= []
@@ -20,10 +20,10 @@ module Gem
20
20
  # specified in the environment
21
21
 
22
22
  def self.default_spec_cache_dir
23
- default_spec_cache_dir = File.join Gem.user_home, '.gem', 'specs'
23
+ default_spec_cache_dir = File.join Gem.user_home, ".gem", "specs"
24
24
 
25
25
  unless File.exist?(default_spec_cache_dir)
26
- default_spec_cache_dir = File.join Gem.data_home, 'gem', 'specs'
26
+ default_spec_cache_dir = File.join Gem.data_home, "gem", "specs"
27
27
  end
28
28
 
29
29
  default_spec_cache_dir
@@ -34,21 +34,7 @@ module Gem
34
34
  # specified in the environment
35
35
 
36
36
  def self.default_dir
37
- path = if defined? RUBY_FRAMEWORK_VERSION
38
- [
39
- File.dirname(RbConfig::CONFIG['sitedir']),
40
- 'Gems',
41
- RbConfig::CONFIG['ruby_version'],
42
- ]
43
- else
44
- [
45
- RbConfig::CONFIG['rubylibprefix'],
46
- 'gems',
47
- RbConfig::CONFIG['ruby_version'],
48
- ]
49
- end
50
-
51
- @default_dir ||= File.join(*path)
37
+ @default_dir ||= File.join(RbConfig::CONFIG["rubylibprefix"], "gems", RbConfig::CONFIG["ruby_version"])
52
38
  end
53
39
 
54
40
  ##
@@ -95,7 +81,7 @@ module Gem
95
81
  Dir.home.dup
96
82
  rescue
97
83
  if Gem.win_platform?
98
- File.expand_path File.join(ENV['HOMEDRIVE'] || ENV['SystemDrive'], '/')
84
+ File.expand_path File.join(ENV["HOMEDRIVE"] || ENV["SystemDrive"], "/")
99
85
  else
100
86
  File.expand_path "/"
101
87
  end
@@ -117,7 +103,7 @@ module Gem
117
103
  gem_dir = File.join(Gem.user_home, ".gem")
118
104
  gem_dir = File.join(Gem.data_home, "gem") unless File.exist?(gem_dir)
119
105
  parts = [gem_dir, ruby_engine]
120
- parts << RbConfig::CONFIG['ruby_version'] unless RbConfig::CONFIG['ruby_version'].empty?
106
+ parts << RbConfig::CONFIG["ruby_version"] unless RbConfig::CONFIG["ruby_version"].empty?
121
107
  File.join parts
122
108
  end
123
109
 
@@ -125,14 +111,14 @@ module Gem
125
111
  # The path to standard location of the user's configuration directory.
126
112
 
127
113
  def self.config_home
128
- @config_home ||= (ENV["XDG_CONFIG_HOME"] || File.join(Gem.user_home, '.config'))
114
+ @config_home ||= (ENV["XDG_CONFIG_HOME"] || File.join(Gem.user_home, ".config"))
129
115
  end
130
116
 
131
117
  ##
132
118
  # Finds the user's config file
133
119
 
134
120
  def self.find_config_file
135
- gemrc = File.join Gem.user_home, '.gemrc'
121
+ gemrc = File.join Gem.user_home, ".gemrc"
136
122
  if File.exist? gemrc
137
123
  gemrc
138
124
  else
@@ -147,18 +133,32 @@ module Gem
147
133
  @config_file ||= find_config_file.tap(&Gem::UNTAINT)
148
134
  end
149
135
 
136
+ ##
137
+ # The path to standard location of the user's state file.
138
+
139
+ def self.state_file
140
+ @state_file ||= File.join(Gem.state_home, "gem", "last_update_check").tap(&Gem::UNTAINT)
141
+ end
142
+
150
143
  ##
151
144
  # The path to standard location of the user's cache directory.
152
145
 
153
146
  def self.cache_home
154
- @cache_home ||= (ENV["XDG_CACHE_HOME"] || File.join(Gem.user_home, '.cache'))
147
+ @cache_home ||= (ENV["XDG_CACHE_HOME"] || File.join(Gem.user_home, ".cache"))
155
148
  end
156
149
 
157
150
  ##
158
151
  # The path to standard location of the user's data directory.
159
152
 
160
153
  def self.data_home
161
- @data_home ||= (ENV["XDG_DATA_HOME"] || File.join(Gem.user_home, '.local', 'share'))
154
+ @data_home ||= (ENV["XDG_DATA_HOME"] || File.join(Gem.user_home, ".local", "share"))
155
+ end
156
+
157
+ ##
158
+ # The path to standard location of the user's state directory.
159
+
160
+ def self.state_home
161
+ @state_home ||= (ENV["XDG_STATE_HOME"] || File.join(Gem.user_home, ".local", "state"))
162
162
  end
163
163
 
164
164
  ##
@@ -175,7 +175,7 @@ module Gem
175
175
  path = []
176
176
  path << user_dir if user_home && File.exist?(user_home)
177
177
  path << default_dir
178
- path << vendor_dir if vendor_dir and File.directory? vendor_dir
178
+ path << vendor_dir if vendor_dir && File.directory?(vendor_dir)
179
179
  path
180
180
  end
181
181
 
@@ -183,9 +183,9 @@ module Gem
183
183
  # Deduce Ruby's --program-prefix and --program-suffix from its install name
184
184
 
185
185
  def self.default_exec_format
186
- exec_format = RbConfig::CONFIG['ruby_install_name'].sub('ruby', '%s') rescue '%s'
186
+ exec_format = RbConfig::CONFIG["ruby_install_name"].sub("ruby", "%s") rescue "%s"
187
187
 
188
- unless exec_format =~ /%s/
188
+ unless exec_format.include?("%s")
189
189
  raise Gem::Exception,
190
190
  "[BUG] invalid exec_format #{exec_format.inspect}, no %s"
191
191
  end
@@ -197,11 +197,7 @@ module Gem
197
197
  # The default directory for binaries
198
198
 
199
199
  def self.default_bindir
200
- if defined? RUBY_FRAMEWORK_VERSION # mac framework support
201
- '/usr/local/bin'
202
- else # generic install
203
- RbConfig::CONFIG['bindir']
204
- end
200
+ RbConfig::CONFIG["bindir"]
205
201
  end
206
202
 
207
203
  def self.ruby_engine
@@ -245,14 +241,14 @@ module Gem
245
241
  # Directory where vendor gems are installed.
246
242
 
247
243
  def self.vendor_dir # :nodoc:
248
- if vendor_dir = ENV['GEM_VENDOR']
244
+ if vendor_dir = ENV["GEM_VENDOR"]
249
245
  return vendor_dir.dup
250
246
  end
251
247
 
252
- return nil unless RbConfig::CONFIG.key? 'vendordir'
248
+ return nil unless RbConfig::CONFIG.key? "vendordir"
253
249
 
254
- File.join RbConfig::CONFIG['vendordir'], 'gems',
255
- RbConfig::CONFIG['ruby_version']
250
+ File.join RbConfig::CONFIG["vendordir"], "gems",
251
+ RbConfig::CONFIG["ruby_version"]
256
252
  end
257
253
 
258
254
  ##
@@ -97,14 +97,14 @@ class Gem::Dependency
97
97
  end
98
98
 
99
99
  def pretty_print(q) # :nodoc:
100
- q.group 1, 'Gem::Dependency.new(', ')' do
100
+ q.group 1, "Gem::Dependency.new(", ")" do
101
101
  q.pp name
102
- q.text ','
102
+ q.text ","
103
103
  q.breakable
104
104
 
105
105
  q.pp requirement
106
106
 
107
- q.text ','
107
+ q.text ","
108
108
  q.breakable
109
109
 
110
110
  q.pp type
@@ -115,7 +115,7 @@ class Gem::Dependency
115
115
  # What does this dependency require?
116
116
 
117
117
  def requirement
118
- return @requirement if defined?(@requirement) and @requirement
118
+ return @requirement if defined?(@requirement) && @requirement
119
119
 
120
120
  # @version_requirements and @version_requirement are legacy ivar
121
121
  # names, and supported here because older gems need to keep
@@ -197,7 +197,7 @@ class Gem::Dependency
197
197
  reqs = other.requirement.requirements
198
198
 
199
199
  return false unless reqs.length == 1
200
- return false unless reqs.first.first == '='
200
+ return false unless reqs.first.first == "="
201
201
 
202
202
  version = reqs.first.last
203
203
 
@@ -230,10 +230,10 @@ class Gem::Dependency
230
230
 
231
231
  version = Gem::Version.new version
232
232
 
233
- return true if requirement.none? and not version.prerelease?
234
- return false if version.prerelease? and
235
- not allow_prerelease and
236
- not prerelease?
233
+ return true if requirement.none? && !version.prerelease?
234
+ return false if version.prerelease? &&
235
+ !allow_prerelease &&
236
+ !prerelease?
237
237
 
238
238
  requirement.satisfied_by? version
239
239
  end
@@ -277,7 +277,10 @@ class Gem::Dependency
277
277
  requirement.satisfied_by?(spec.version) && env_req.satisfied_by?(spec.version)
278
278
  end.map(&:to_spec)
279
279
 
280
- Gem::BundlerVersionFinder.filter!(matches) if filters_bundler?
280
+ if prioritizes_bundler?
281
+ require_relative "bundler_version_finder"
282
+ Gem::BundlerVersionFinder.prioritize!(matches)
283
+ end
281
284
 
282
285
  if platform_only
283
286
  matches.reject! do |spec|
@@ -295,8 +298,8 @@ class Gem::Dependency
295
298
  @requirement.specific?
296
299
  end
297
300
 
298
- def filters_bundler?
299
- name == "bundler".freeze && !specific?
301
+ def prioritizes_bundler?
302
+ name == "bundler" && !specific?
300
303
  end
301
304
 
302
305
  def to_specs
@@ -325,11 +328,11 @@ class Gem::Dependency
325
328
  active = matches.find {|spec| spec.activated? }
326
329
  return active if active
327
330
 
328
- return matches.first if prerelease?
329
-
330
- # Move prereleases to the end of the list for >= 0 requirements
331
- pre, matches = matches.partition {|spec| spec.version.prerelease? }
332
- matches += pre if requirement == Gem::Requirement.default
331
+ unless prerelease?
332
+ # Move prereleases to the end of the list for >= 0 requirements
333
+ pre, matches = matches.partition {|spec| spec.version.prerelease? }
334
+ matches += pre if requirement == Gem::Requirement.default
335
+ end
333
336
 
334
337
  matches.first
335
338
  end