rubygems-update 3.3.26 → 3.4.1

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 (272) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +35 -0
  3. data/CONTRIBUTING.md +24 -1
  4. data/Manifest.txt +30 -27
  5. data/POLICIES.md +10 -8
  6. data/README.md +2 -2
  7. data/bin/gem +1 -4
  8. data/bin/update_rubygems +1 -1
  9. data/bundler/CHANGELOG.md +59 -0
  10. data/bundler/README.md +2 -2
  11. data/bundler/bundler.gemspec +2 -2
  12. data/bundler/exe/bundle +1 -4
  13. data/bundler/lib/bundler/build_metadata.rb +2 -2
  14. data/bundler/lib/bundler/cli/add.rb +1 -1
  15. data/bundler/lib/bundler/cli/check.rb +1 -1
  16. data/bundler/lib/bundler/cli/common.rb +1 -0
  17. data/bundler/lib/bundler/cli/console.rb +2 -2
  18. data/bundler/lib/bundler/cli/doctor.rb +4 -6
  19. data/bundler/lib/bundler/cli/gem.rb +62 -40
  20. data/bundler/lib/bundler/cli/install.rb +2 -3
  21. data/bundler/lib/bundler/cli/lock.rb +8 -5
  22. data/bundler/lib/bundler/cli/outdated.rb +1 -3
  23. data/bundler/lib/bundler/cli/viz.rb +1 -1
  24. data/bundler/lib/bundler/cli.rb +43 -2
  25. data/bundler/lib/bundler/compact_index_client/cache.rb +1 -1
  26. data/bundler/lib/bundler/compact_index_client/updater.rb +40 -39
  27. data/bundler/lib/bundler/constants.rb +1 -1
  28. data/bundler/lib/bundler/definition.rb +61 -31
  29. data/bundler/lib/bundler/dependency.rb +12 -11
  30. data/bundler/lib/bundler/digest.rb +1 -1
  31. data/bundler/lib/bundler/dsl.rb +1 -1
  32. data/bundler/lib/bundler/env.rb +1 -1
  33. data/bundler/lib/bundler/environment_preserver.rb +1 -0
  34. data/bundler/lib/bundler/errors.rb +1 -11
  35. data/bundler/lib/bundler/fetcher/compact_index.rb +9 -11
  36. data/bundler/lib/bundler/fetcher/dependency.rb +1 -1
  37. data/bundler/lib/bundler/fetcher/downloader.rb +2 -5
  38. data/bundler/lib/bundler/fetcher.rb +2 -6
  39. data/bundler/lib/bundler/force_platform.rb +18 -0
  40. data/bundler/lib/bundler/friendly_errors.rb +0 -3
  41. data/bundler/lib/bundler/gem_version_promoter.rb +52 -86
  42. data/bundler/lib/bundler/graph.rb +3 -3
  43. data/bundler/lib/bundler/index.rb +5 -13
  44. data/bundler/lib/bundler/injector.rb +1 -1
  45. data/bundler/lib/bundler/inline.rb +2 -2
  46. data/bundler/lib/bundler/installer/parallel_installer.rb +0 -31
  47. data/bundler/lib/bundler/installer.rb +6 -16
  48. data/bundler/lib/bundler/lazy_specification.rb +5 -1
  49. data/bundler/lib/bundler/lockfile_parser.rb +5 -5
  50. data/bundler/lib/bundler/man/bundle-add.1 +1 -1
  51. data/bundler/lib/bundler/man/bundle-binstubs.1 +1 -1
  52. data/bundler/lib/bundler/man/bundle-cache.1 +1 -1
  53. data/bundler/lib/bundler/man/bundle-check.1 +1 -1
  54. data/bundler/lib/bundler/man/bundle-clean.1 +1 -1
  55. data/bundler/lib/bundler/man/bundle-config.1 +1 -1
  56. data/bundler/lib/bundler/man/bundle-console.1 +1 -1
  57. data/bundler/lib/bundler/man/bundle-doctor.1 +1 -1
  58. data/bundler/lib/bundler/man/bundle-exec.1 +1 -1
  59. data/bundler/lib/bundler/man/bundle-gem.1 +27 -37
  60. data/bundler/lib/bundler/man/bundle-gem.1.ronn +5 -5
  61. data/bundler/lib/bundler/man/bundle-help.1 +1 -1
  62. data/bundler/lib/bundler/man/bundle-info.1 +1 -1
  63. data/bundler/lib/bundler/man/bundle-init.1 +1 -1
  64. data/bundler/lib/bundler/man/bundle-inject.1 +1 -1
  65. data/bundler/lib/bundler/man/bundle-install.1 +1 -30
  66. data/bundler/lib/bundler/man/bundle-install.1.ronn +0 -29
  67. data/bundler/lib/bundler/man/bundle-list.1 +1 -1
  68. data/bundler/lib/bundler/man/bundle-lock.1 +1 -1
  69. data/bundler/lib/bundler/man/bundle-open.1 +1 -1
  70. data/bundler/lib/bundler/man/bundle-outdated.1 +1 -1
  71. data/bundler/lib/bundler/man/bundle-platform.1 +2 -2
  72. data/bundler/lib/bundler/man/bundle-platform.1.ronn +1 -1
  73. data/bundler/lib/bundler/man/bundle-plugin.1 +1 -1
  74. data/bundler/lib/bundler/man/bundle-pristine.1 +1 -1
  75. data/bundler/lib/bundler/man/bundle-remove.1 +1 -1
  76. data/bundler/lib/bundler/man/bundle-show.1 +1 -1
  77. data/bundler/lib/bundler/man/bundle-update.1 +1 -1
  78. data/bundler/lib/bundler/man/bundle-version.1 +1 -1
  79. data/bundler/lib/bundler/man/bundle-viz.1 +1 -1
  80. data/bundler/lib/bundler/man/bundle.1 +1 -1
  81. data/bundler/lib/bundler/man/gemfile.5 +1 -1
  82. data/bundler/lib/bundler/mirror.rb +5 -7
  83. data/bundler/lib/bundler/plugin/index.rb +4 -4
  84. data/bundler/lib/bundler/plugin/installer/rubygems.rb +0 -4
  85. data/bundler/lib/bundler/resolver/base.rb +7 -11
  86. data/bundler/lib/bundler/resolver/candidate.rb +92 -0
  87. data/bundler/lib/bundler/resolver/incompatibility.rb +15 -0
  88. data/bundler/lib/bundler/resolver/package.rb +63 -0
  89. data/bundler/lib/bundler/resolver/root.rb +25 -0
  90. data/bundler/lib/bundler/resolver/spec_group.rb +26 -36
  91. data/bundler/lib/bundler/resolver.rb +294 -277
  92. data/bundler/lib/bundler/rubygems_ext.rb +11 -6
  93. data/bundler/lib/bundler/rubygems_gem_installer.rb +4 -2
  94. data/bundler/lib/bundler/rubygems_integration.rb +1 -9
  95. data/bundler/lib/bundler/runtime.rb +1 -5
  96. data/bundler/lib/bundler/settings.rb +0 -6
  97. data/bundler/lib/bundler/shared_helpers.rb +1 -0
  98. data/bundler/lib/bundler/source/git/git_proxy.rb +193 -67
  99. data/bundler/lib/bundler/source/git.rb +15 -17
  100. data/bundler/lib/bundler/source/metadata.rb +0 -1
  101. data/bundler/lib/bundler/source/path/installer.rb +1 -22
  102. data/bundler/lib/bundler/source/path.rb +5 -5
  103. data/bundler/lib/bundler/source/rubygems.rb +13 -67
  104. data/bundler/lib/bundler/source_list.rb +8 -2
  105. data/bundler/lib/bundler/spec_set.rb +7 -9
  106. data/bundler/lib/bundler/templates/Executable +1 -1
  107. data/bundler/lib/bundler/templates/Executable.bundler +4 -9
  108. data/bundler/lib/bundler/templates/Executable.standalone +2 -0
  109. data/bundler/lib/bundler/templates/newgem/Cargo.toml.tt +7 -0
  110. data/bundler/lib/bundler/templates/newgem/Gemfile.tt +3 -0
  111. data/bundler/lib/bundler/templates/newgem/README.md.tt +6 -4
  112. data/bundler/lib/bundler/templates/newgem/Rakefile.tt +2 -1
  113. data/bundler/lib/bundler/templates/newgem/circleci/config.yml.tt +12 -0
  114. data/bundler/lib/bundler/templates/newgem/ext/newgem/Cargo.toml.tt +15 -0
  115. data/bundler/lib/bundler/templates/newgem/ext/newgem/{extconf.rb.tt → extconf-c.rb.tt} +0 -0
  116. data/bundler/lib/bundler/templates/newgem/ext/newgem/extconf-rust.rb.tt +6 -0
  117. data/bundler/lib/bundler/templates/newgem/ext/newgem/src/lib.rs.tt +12 -0
  118. data/bundler/lib/bundler/templates/newgem/github/workflows/main.yml.tt +10 -0
  119. data/bundler/lib/bundler/templates/newgem/gitignore.tt +3 -0
  120. data/bundler/lib/bundler/templates/newgem/gitlab-ci.yml.tt +8 -0
  121. data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +8 -2
  122. data/bundler/lib/bundler/ui/shell.rb +35 -12
  123. data/bundler/lib/bundler/ui/silent.rb +21 -5
  124. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb +3 -3
  125. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/wrapper.rb +0 -1
  126. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +3 -1
  127. data/bundler/lib/bundler/vendor/fileutils/lib/fileutils.rb +1350 -408
  128. data/bundler/lib/bundler/vendor/net-http-persistent/README.rdoc +1 -1
  129. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +1 -1
  130. data/bundler/lib/bundler/vendor/pub_grub/LICENSE.txt +21 -0
  131. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/assignment.rb +20 -0
  132. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/basic_package_source.rb +189 -0
  133. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/failure_writer.rb +182 -0
  134. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/incompatibility.rb +151 -0
  135. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/package.rb +43 -0
  136. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/partial_solution.rb +121 -0
  137. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/rubygems.rb +45 -0
  138. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/solve_failure.rb +19 -0
  139. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/static_package_source.rb +53 -0
  140. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/term.rb +105 -0
  141. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version.rb +3 -0
  142. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_constraint.rb +124 -0
  143. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_range.rb +409 -0
  144. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_solver.rb +240 -0
  145. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_union.rb +178 -0
  146. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub.rb +31 -0
  147. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +1 -1
  148. data/bundler/lib/bundler/vendor/uri/lib/uri/common.rb +64 -16
  149. data/bundler/lib/bundler/vendor/uri/lib/uri/file.rb +7 -1
  150. data/bundler/lib/bundler/vendor/uri/lib/uri/ftp.rb +2 -1
  151. data/bundler/lib/bundler/vendor/uri/lib/uri/generic.rb +27 -7
  152. data/bundler/lib/bundler/vendor/uri/lib/uri/http.rb +40 -2
  153. data/bundler/lib/bundler/vendor/uri/lib/uri/https.rb +2 -1
  154. data/bundler/lib/bundler/vendor/uri/lib/uri/ldap.rb +1 -1
  155. data/bundler/lib/bundler/vendor/uri/lib/uri/ldaps.rb +2 -1
  156. data/bundler/lib/bundler/vendor/uri/lib/uri/mailto.rb +2 -2
  157. data/bundler/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb +13 -7
  158. data/bundler/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +10 -5
  159. data/bundler/lib/bundler/vendor/uri/lib/uri/version.rb +1 -1
  160. data/bundler/lib/bundler/vendor/uri/lib/uri/ws.rb +1 -2
  161. data/bundler/lib/bundler/vendor/uri/lib/uri/wss.rb +2 -1
  162. data/bundler/lib/bundler/vendor/uri/lib/uri.rb +3 -2
  163. data/bundler/lib/bundler/vendored_persistent.rb +1 -33
  164. data/bundler/lib/bundler/{vendored_tmpdir.rb → vendored_pub_grub.rb} +1 -1
  165. data/bundler/lib/bundler/version.rb +5 -1
  166. data/bundler/lib/bundler/worker.rb +5 -7
  167. data/bundler/lib/bundler.rb +20 -64
  168. data/lib/rubygems/command_manager.rb +2 -2
  169. data/lib/rubygems/commands/fetch_command.rb +1 -1
  170. data/lib/rubygems/commands/install_command.rb +7 -3
  171. data/lib/rubygems/commands/rdoc_command.rb +3 -2
  172. data/lib/rubygems/commands/setup_command.rb +2 -2
  173. data/lib/rubygems/commands/unpack_command.rb +1 -1
  174. data/lib/rubygems/commands/update_command.rb +1 -7
  175. data/lib/rubygems/config_file.rb +33 -0
  176. data/lib/rubygems/core_ext/kernel_warn.rb +1 -2
  177. data/lib/rubygems/defaults.rb +15 -1
  178. data/lib/rubygems/dependency.rb +4 -1
  179. data/lib/rubygems/dependency_installer.rb +24 -24
  180. data/lib/rubygems/exceptions.rb +1 -3
  181. data/lib/rubygems/ext/builder.rb +3 -3
  182. data/lib/rubygems/ext/cargo_builder/link_flag_converter.rb +9 -5
  183. data/lib/rubygems/ext/cargo_builder.rb +15 -20
  184. data/lib/rubygems/ext/ext_conf_builder.rb +2 -0
  185. data/lib/rubygems/indexer.rb +1 -1
  186. data/lib/rubygems/installer.rb +5 -5
  187. data/lib/rubygems/optparse/lib/optparse.rb +20 -15
  188. data/lib/rubygems/package/tar_header.rb +11 -11
  189. data/lib/rubygems/platform.rb +0 -2
  190. data/lib/rubygems/request_set/gem_dependency_api.rb +104 -104
  191. data/lib/rubygems/requirement.rb +7 -7
  192. data/lib/rubygems/resolver/installer_set.rb +1 -1
  193. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph.rb +1 -1
  194. data/lib/rubygems/resolver/molinillo/lib/molinillo/errors.rb +32 -26
  195. data/lib/rubygems/resolver/molinillo/lib/molinillo/gem_metadata.rb +1 -1
  196. data/lib/rubygems/security/policies.rb +40 -40
  197. data/lib/rubygems/security/trust_dir.rb +1 -1
  198. data/lib/rubygems/security.rb +3 -16
  199. data/lib/rubygems/source.rb +2 -2
  200. data/lib/rubygems/specification.rb +37 -49
  201. data/lib/rubygems/specification_policy.rb +14 -0
  202. data/lib/rubygems/stub_specification.rb +2 -2
  203. data/lib/rubygems/text.rb +1 -1
  204. data/lib/rubygems/tsort/lib/tsort.rb +308 -310
  205. data/lib/rubygems/update_suggestion.rb +69 -0
  206. data/lib/rubygems/util.rb +1 -5
  207. data/lib/rubygems/validator.rb +1 -1
  208. data/lib/rubygems.rb +8 -3
  209. data/rubygems-update.gemspec +2 -2
  210. data/test/rubygems/helper.rb +7 -3
  211. data/test/rubygems/test_bundled_ca.rb +1 -1
  212. data/test/rubygems/test_exit.rb +6 -0
  213. data/test/rubygems/test_gem.rb +4 -9
  214. data/test/rubygems/test_gem_bundler_version_finder.rb +2 -1
  215. data/test/rubygems/test_gem_command_manager.rb +1 -1
  216. data/test/rubygems/test_gem_commands_install_command.rb +19 -0
  217. data/test/rubygems/test_gem_commands_setup_command.rb +1 -8
  218. data/test/rubygems/test_gem_commands_update_command.rb +6 -6
  219. data/test/rubygems/test_gem_config_file.rb +1 -1
  220. data/test/rubygems/test_gem_dependency.rb +2 -0
  221. data/test/rubygems/test_gem_ext_builder.rb +3 -3
  222. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/Cargo.lock +22 -32
  223. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/Cargo.toml +1 -1
  224. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.lock +22 -32
  225. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.toml +1 -1
  226. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/src/lib.rs +12 -0
  227. data/test/rubygems/test_gem_ext_cargo_builder.rb +22 -27
  228. data/test/rubygems/test_gem_ext_cargo_builder_link_flag_converter.rb +16 -16
  229. data/test/rubygems/test_gem_ext_cargo_builder_unit.rb +0 -10
  230. data/test/rubygems/test_gem_indexer.rb +39 -20
  231. data/test/rubygems/test_gem_installer.rb +68 -2
  232. data/test/rubygems/test_gem_package_tar_header.rb +13 -13
  233. data/test/rubygems/test_gem_platform.rb +59 -60
  234. data/test/rubygems/test_gem_remote_fetcher.rb +4 -4
  235. data/test/rubygems/test_gem_request_set.rb +2 -2
  236. data/test/rubygems/test_gem_requirement.rb +1 -1
  237. data/test/rubygems/test_gem_resolver_api_set.rb +12 -12
  238. data/test/rubygems/test_gem_resolver_api_specification.rb +19 -19
  239. data/test/rubygems/test_gem_resolver_git_specification.rb +1 -1
  240. data/test/rubygems/test_gem_security_policy.rb +10 -10
  241. data/test/rubygems/test_gem_security_trust_dir.rb +2 -2
  242. data/test/rubygems/test_gem_specification.rb +50 -37
  243. data/test/rubygems/test_gem_uninstaller.rb +1 -1
  244. data/test/rubygems/test_gem_update_suggestion.rb +208 -0
  245. data/test/rubygems/test_kernel.rb +10 -8
  246. data/test/rubygems/test_require.rb +70 -55
  247. metadata +34 -31
  248. data/bundler/lib/bundler/templates/newgem/travis.yml.tt +0 -6
  249. data/bundler/lib/bundler/vendor/molinillo/LICENSE +0 -9
  250. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/delegates/resolution_state.rb +0 -57
  251. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/delegates/specification_provider.rb +0 -88
  252. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/action.rb +0 -36
  253. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +0 -66
  254. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +0 -62
  255. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +0 -63
  256. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +0 -61
  257. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/log.rb +0 -126
  258. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/set_payload.rb +0 -46
  259. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb +0 -36
  260. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb +0 -164
  261. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb +0 -255
  262. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +0 -149
  263. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb +0 -6
  264. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/modules/specification_provider.rb +0 -112
  265. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/modules/ui.rb +0 -67
  266. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +0 -839
  267. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolver.rb +0 -46
  268. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/state.rb +0 -58
  269. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo.rb +0 -11
  270. data/bundler/lib/bundler/vendor/tmpdir/lib/tmpdir.rb +0 -154
  271. data/bundler/lib/bundler/vendored_molinillo.rb +0 -4
  272. data/bundler/lib/bundler/version_ranges.rb +0 -122
@@ -0,0 +1,69 @@
1
+ # frozen_string_literal: true
2
+
3
+ ##
4
+ # Mixin methods for Gem::Command to promote available RubyGems update
5
+
6
+ module Gem::UpdateSuggestion
7
+ # list taken from https://github.com/watson/ci-info/blob/7a3c30d/index.js#L56-L66
8
+ CI_ENV_VARS = [
9
+ "CI", # Travis CI, CircleCI, Cirrus CI, Gitlab CI, Appveyor, CodeShip, dsari
10
+ "CONTINUOUS_INTEGRATION", # Travis CI, Cirrus CI
11
+ "BUILD_NUMBER", # Jenkins, TeamCity
12
+ "CI_APP_ID", "CI_BUILD_ID", "CI_BUILD_NUMBER", # Applfow
13
+ "RUN_ID" # TaskCluster, dsari
14
+ ].freeze
15
+
16
+ ONE_WEEK = 7 * 24 * 60 * 60
17
+
18
+ ##
19
+ # Message to promote available RubyGems update with related gem update command.
20
+
21
+ def update_suggestion
22
+ <<-MESSAGE
23
+
24
+ A new release of RubyGems is available: #{Gem.rubygems_version} → #{Gem.latest_rubygems_version}!
25
+ Run `gem update --system #{Gem.latest_rubygems_version}` to update your installation.
26
+
27
+ MESSAGE
28
+ end
29
+
30
+ ##
31
+ # Determines if current environment is eglible for update suggestion.
32
+
33
+ def eglible_for_update?
34
+ # explicit opt-out
35
+ return false if Gem.configuration[:prevent_update_suggestion]
36
+ return false if ENV["RUBYGEMS_PREVENT_UPDATE_SUGGESTION"]
37
+
38
+ # focus only on human usage of final RubyGems releases
39
+ return false unless Gem.ui.tty?
40
+ return false if Gem.rubygems_version.prerelease?
41
+ return false if Gem.disable_system_update_message
42
+ return false if ci?
43
+
44
+ # check makes sense only when we can store timestamp of last try
45
+ # otherwise we will not be able to prevent "annoying" update message
46
+ # on each command call
47
+ return unless Gem.configuration.state_file_writable?
48
+
49
+ # load time of last check, ensure the difference is enough to repeat the suggestion
50
+ check_time = Time.now.to_i
51
+ last_update_check = Gem.configuration.last_update_check
52
+ return false if (check_time - last_update_check) < ONE_WEEK
53
+
54
+ # compare current and latest version, this is the part where
55
+ # latest rubygems spec is fetched from remote
56
+ (Gem.rubygems_version < Gem.latest_rubygems_version).tap do |eglible|
57
+ # store the time of last successful check into state file
58
+ Gem.configuration.last_update_check = check_time
59
+
60
+ return eglible
61
+ end
62
+ rescue # don't block install command on any problem
63
+ false
64
+ end
65
+
66
+ def ci?
67
+ CI_ENV_VARS.any? {|var| ENV.include?(var) }
68
+ end
69
+ end
data/lib/rubygems/util.rb CHANGED
@@ -97,11 +97,7 @@ module Gem::Util
97
97
  # returning absolute paths to the matching files.
98
98
 
99
99
  def self.glob_files_in_dir(glob, base_path)
100
- if RUBY_VERSION >= "2.5"
101
- Dir.glob(glob, base: base_path).map! {|f| File.expand_path(f, base_path) }
102
- else
103
- Dir.glob(File.expand_path(glob, base_path))
104
- end
100
+ Dir.glob(glob, base: base_path).map! {|f| File.expand_path(f, base_path) }
105
101
  end
106
102
 
107
103
  ##
@@ -26,7 +26,7 @@ class Gem::Validator
26
26
  Find.find gem_directory do |file_name|
27
27
  fn = file_name[gem_directory.size..file_name.size - 1].sub(/^\//, "")
28
28
  installed_files << fn unless
29
- fn =~ /CVS/ || fn.empty? || File.directory?(file_name)
29
+ fn.empty? || fn.include?("CVS") || File.directory?(file_name)
30
30
  end
31
31
 
32
32
  installed_files
data/lib/rubygems.rb CHANGED
@@ -8,7 +8,7 @@
8
8
  require "rbconfig"
9
9
 
10
10
  module Gem
11
- VERSION = "3.3.26".freeze
11
+ VERSION = "3.4.1".freeze
12
12
  end
13
13
 
14
14
  # Must be first since it unloads the prelude from 1.9.2
@@ -774,6 +774,10 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
774
774
  open_file(path, "wb") do |io|
775
775
  io.write data
776
776
  end
777
+ rescue Errno::ENOSPC
778
+ # If we ran out of space but the file exists, it's *guaranteed* to be corrupted.
779
+ File.delete(path) if File.exist?(path)
780
+ raise
777
781
  end
778
782
 
779
783
  ##
@@ -1010,7 +1014,7 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
1010
1014
  # Is this platform Solaris?
1011
1015
 
1012
1016
  def self.solaris_platform?
1013
- RUBY_PLATFORM =~ /solaris/
1017
+ RUBY_PLATFORM.include?("solaris")
1014
1018
  end
1015
1019
 
1016
1020
  ##
@@ -1293,7 +1297,6 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
1293
1297
 
1294
1298
  MARSHAL_SPEC_DIR = "quick/Marshal.#{Gem.marshal_version}/".freeze
1295
1299
 
1296
- autoload :BundlerVersionFinder, File.expand_path("rubygems/bundler_version_finder", __dir__)
1297
1300
  autoload :ConfigFile, File.expand_path("rubygems/config_file", __dir__)
1298
1301
  autoload :Dependency, File.expand_path("rubygems/dependency", __dir__)
1299
1302
  autoload :DependencyList, File.expand_path("rubygems/dependency_list", __dir__)
@@ -1348,3 +1351,5 @@ Gem::Specification.load_defaults
1348
1351
  require_relative "rubygems/core_ext/kernel_gem"
1349
1352
  require_relative "rubygems/core_ext/kernel_require"
1350
1353
  require_relative "rubygems/core_ext/kernel_warn"
1354
+
1355
+ require ENV["BUNDLER_SETUP"] if ENV["BUNDLER_SETUP"] && !defined?(Bundler)
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = "rubygems-update"
5
- s.version = "3.3.26"
5
+ s.version = "3.4.1"
6
6
  s.authors = ["Jim Weirich", "Chad Fowler", "Eric Hodel", "Luis Lavena", "Aaron Patterson", "Samuel Giddins", "André Arko", "Evan Phoenix", "Hiroshi SHIBATA"]
7
7
  s.email = ["", "", "drbrain@segment7.net", "luislavena@gmail.com", "aaron@tenderlovemaking.com", "segiddins@segiddins.me", "andre@arko.net", "evan@phx.io", "hsbt@ruby-lang.org"]
8
8
 
@@ -29,7 +29,7 @@ Gem::Specification.new do |s|
29
29
  "hide_lib_for_update/note.txt", *Dir["bundler/man/*.1"]
30
30
  ]
31
31
 
32
- s.required_ruby_version = Gem::Requirement.new(">= 2.3.0")
32
+ s.required_ruby_version = Gem::Requirement.new(">= 2.6.0")
33
33
  s.required_rubygems_version = Gem::Requirement.new(">= 0")
34
34
 
35
35
  s.specification_version = 4
@@ -255,7 +255,7 @@ class Gem::TestCase < Test::Unit::TestCase
255
255
  end
256
256
 
257
257
  def assert_contains_make_command(target, output, msg = nil)
258
- if output.match(/\n/)
258
+ if output.include?("\n")
259
259
  msg = build_message(msg,
260
260
  "Expected output containing make command \"%s\", but was \n\nBEGIN_OF_OUTPUT\n%sEND_OF_OUTPUT" % [
261
261
  ("%s %s" % [make_command, target]).rstrip,
@@ -307,8 +307,10 @@ class Gem::TestCase < Test::Unit::TestCase
307
307
  ENV["XDG_CACHE_HOME"] = nil
308
308
  ENV["XDG_CONFIG_HOME"] = nil
309
309
  ENV["XDG_DATA_HOME"] = nil
310
+ ENV["XDG_STATE_HOME"] = nil
310
311
  ENV["SOURCE_DATE_EPOCH"] = nil
311
312
  ENV["BUNDLER_VERSION"] = nil
313
+ ENV["RUBYGEMS_PREVENT_UPDATE_SUGGESTION"] = "true"
312
314
 
313
315
  @current_dir = Dir.pwd
314
316
  @fetcher = nil
@@ -326,6 +328,7 @@ class Gem::TestCase < Test::Unit::TestCase
326
328
 
327
329
  @gemhome = File.join @tempdir, "gemhome"
328
330
  @userhome = File.join @tempdir, "userhome"
331
+ @statehome = File.join @tempdir, "statehome"
329
332
  ENV["GEM_SPEC_CACHE"] = File.join @tempdir, "spec_cache"
330
333
 
331
334
  @orig_ruby = if ENV["RUBY"]
@@ -334,7 +337,7 @@ class Gem::TestCase < Test::Unit::TestCase
334
337
  ruby
335
338
  end
336
339
 
337
- @git = ENV["GIT"] || (win_platform? ? "git.exe" : "git")
340
+ @git = ENV["GIT"] || "git#{RbConfig::CONFIG['EXEEXT']}"
338
341
 
339
342
  Gem.ensure_gem_subdirectories @gemhome
340
343
  Gem.ensure_default_gem_subdirectories @gemhome
@@ -360,6 +363,7 @@ class Gem::TestCase < Test::Unit::TestCase
360
363
  Gem.instance_variable_set :@user_home, nil
361
364
  Gem.instance_variable_set :@config_home, nil
362
365
  Gem.instance_variable_set :@data_home, nil
366
+ Gem.instance_variable_set :@state_home, @statehome
363
367
  Gem.instance_variable_set :@gemdeps, nil
364
368
  Gem.instance_variable_set :@env_requirements_by_name, nil
365
369
  Gem.send :remove_instance_variable, :@ruby_version if
@@ -1259,7 +1263,7 @@ Also, a list:
1259
1263
  ruby = ENV["RUBY"]
1260
1264
  return ruby if ruby
1261
1265
  ruby = "ruby"
1262
- rubyexe = "#{ruby}.exe"
1266
+ rubyexe = "#{ruby}#{RbConfig::CONFIG['EXEEXT']}"
1263
1267
 
1264
1268
  3.times do
1265
1269
  if File.exist?(ruby) && File.executable?(ruby) && !File.directory?(ruby)
@@ -36,7 +36,7 @@ class TestBundledCA < Gem::TestCase
36
36
  pend "#{host} seems offline, I can't tell whether ssl would work."
37
37
  rescue OpenSSL::SSL::SSLError => e
38
38
  # Only fail for certificate verification errors
39
- if e.message =~ /certificate verify failed/
39
+ if e.message.include?("certificate verify failed")
40
40
  flunk "#{host} is not verifiable using the included certificates. Error was: #{e.message}"
41
41
  end
42
42
  raise
@@ -8,4 +8,10 @@ class TestExit < Gem::TestCase
8
8
  system(*ruby_with_rubygems_in_load_path, "-e", "raise Gem::SystemExitException.new(2)")
9
9
  assert_equal 2, $?.exitstatus
10
10
  end
11
+
12
+ def test_status
13
+ exc = Gem::SystemExitException.new(42)
14
+ assert_equal 42, exc.status
15
+ assert_equal 42, exc.exit_code
16
+ end
11
17
  end
@@ -1358,8 +1358,8 @@ class TestGem < Gem::TestCase
1358
1358
 
1359
1359
  def test_setting_paths_does_not_warn_about_unknown_keys
1360
1360
  stdout, stderr = capture_output do
1361
- Gem.paths = { "foo" => [],
1362
- "bar" => Object.new,
1361
+ Gem.paths = { "foo" => [],
1362
+ "bar" => Object.new,
1363
1363
  "GEM_HOME" => Gem.paths.home,
1364
1364
  "GEM_PATH" => "foo" }
1365
1365
  end
@@ -2061,13 +2061,8 @@ You may need to `bundle install` to install missing gems
2061
2061
  end
2062
2062
 
2063
2063
  def redefine_method(base, method, new_result)
2064
- if RUBY_VERSION >= "2.5"
2065
- base.alias_method(method, method)
2066
- base.define_method(method) { new_result }
2067
- else
2068
- base.send(:alias_method, method, method)
2069
- base.send(:define_method, method) { new_result }
2070
- end
2064
+ base.alias_method(method, method)
2065
+ base.define_method(method) { new_result }
2071
2066
  end
2072
2067
 
2073
2068
  def with_plugin(path)
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
  require_relative "helper"
3
+ require "rubygems/bundler_version_finder"
3
4
 
4
5
  class TestGemBundlerVersionFinder < Gem::TestCase
5
6
  def setup
@@ -78,7 +79,7 @@ class TestGemBundlerVersionFinder < Gem::TestCase
78
79
 
79
80
  def test_deleted_directory
80
81
  pend "Cannot perform this test on windows" if win_platform?
81
- pend "Cannot perform this test on Solaris" if /solaris/ =~ RUBY_PLATFORM
82
+ pend "Cannot perform this test on Solaris" if RUBY_PLATFORM.include?("solaris")
82
83
  require "tmpdir"
83
84
 
84
85
  orig_dir = Dir.pwd
@@ -76,7 +76,7 @@ class TestGemCommandManager < Gem::TestCase
76
76
 
77
77
  message = "Unknown command pish".dup
78
78
 
79
- if RUBY_VERSION >= "2.4" && defined?(DidYouMean::SPELL_CHECKERS) && defined?(DidYouMean::Correctable)
79
+ if defined?(DidYouMean::SPELL_CHECKERS) && defined?(DidYouMean::Correctable)
80
80
  message << "\nDid you mean? \"push\""
81
81
  end
82
82
 
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
  require_relative "helper"
3
+ require_relative "test_gem_update_suggestion"
3
4
  require "rubygems/commands/install_command"
4
5
  require "rubygems/request_set"
5
6
  require "rubygems/rdoc"
@@ -1550,4 +1551,22 @@ ERROR: Possible alternatives: non_existent_with_hint
1550
1551
  assert_equal " a-3", out.shift
1551
1552
  assert_empty out
1552
1553
  end
1554
+
1555
+ def test_suggest_update_if_enabled
1556
+ TestUpdateSuggestion.with_eglible_environment(cmd: @cmd) do
1557
+ spec_fetcher do |fetcher|
1558
+ fetcher.gem "a", 2
1559
+ end
1560
+
1561
+ @cmd.options[:args] = %w[a]
1562
+
1563
+ use_ui @ui do
1564
+ assert_raise Gem::MockGemUi::SystemExitException, @ui.error do
1565
+ @cmd.execute
1566
+ end
1567
+ end
1568
+
1569
+ assert_includes @ui.output, "A new release of RubyGems is available: 1.2.3 → 2.0.0!"
1570
+ end
1571
+ end
1553
1572
  end
@@ -15,6 +15,7 @@ class TestGemCommandsSetupCommand < Gem::TestCase
15
15
  super
16
16
 
17
17
  @cmd = Gem::Commands::SetupCommand.new
18
+ @cmd.options[:document] = []
18
19
 
19
20
  filelist = %w[
20
21
  bin/gem
@@ -66,7 +67,6 @@ class TestGemCommandsSetupCommand < Gem::TestCase
66
67
  io.puts "I changed it!"
67
68
  end
68
69
 
69
- @cmd.options[:document] = []
70
70
  @cmd.execute
71
71
 
72
72
  assert_match %r{\A#!}, File.read(gem_bin_path)
@@ -78,7 +78,6 @@ class TestGemCommandsSetupCommand < Gem::TestCase
78
78
  io.puts "I changed it!"
79
79
  end
80
80
 
81
- @cmd.options[:document] = []
82
81
  @cmd.options[:regenerate_binstubs] = false
83
82
  @cmd.execute
84
83
 
@@ -91,7 +90,6 @@ class TestGemCommandsSetupCommand < Gem::TestCase
91
90
  io.puts "I changed it!"
92
91
  end
93
92
 
94
- @cmd.options[:document] = []
95
93
  @cmd.execute
96
94
 
97
95
  assert_match %r{\Arequire}, File.read(gem_plugin_path)
@@ -103,7 +101,6 @@ class TestGemCommandsSetupCommand < Gem::TestCase
103
101
  io.puts "I changed it!"
104
102
  end
105
103
 
106
- @cmd.options[:document] = []
107
104
  @cmd.options[:regenerate_plugins] = false
108
105
  @cmd.execute
109
106
 
@@ -116,15 +113,12 @@ class TestGemCommandsSetupCommand < Gem::TestCase
116
113
  # Simulate gem installed with an older rubygems without a plugins layout
117
114
  FileUtils.rm_rf Gem.plugindir
118
115
 
119
- @cmd.options[:document] = []
120
116
  @cmd.execute
121
117
 
122
118
  assert_match %r{\Arequire}, File.read(gem_plugin_path)
123
119
  end
124
120
 
125
121
  def test_execute_informs_about_installed_executables
126
- @cmd.options[:document] = []
127
-
128
122
  use_ui @ui do
129
123
  @cmd.execute
130
124
  end
@@ -143,7 +137,6 @@ class TestGemCommandsSetupCommand < Gem::TestCase
143
137
  io.puts "I changed it!"
144
138
  end
145
139
 
146
- @cmd.options[:document] = []
147
140
  @cmd.options[:env_shebang] = true
148
141
  @cmd.execute
149
142
 
@@ -669,10 +669,10 @@ class TestGemCommandsUpdateCommand < Gem::TestCase
669
669
  @cmd.handle_options %w[--system]
670
670
 
671
671
  expected = {
672
- :args => [],
672
+ :args => [],
673
673
  :document => %w[ri],
674
- :force => false,
675
- :system => true,
674
+ :force => false,
675
+ :system => true,
676
676
  }
677
677
 
678
678
  assert_equal expected, @cmd.options
@@ -688,10 +688,10 @@ class TestGemCommandsUpdateCommand < Gem::TestCase
688
688
  @cmd.handle_options %w[--system 1.3.7]
689
689
 
690
690
  expected = {
691
- :args => [],
691
+ :args => [],
692
692
  :document => %w[ri],
693
- :force => false,
694
- :system => "1.3.7",
693
+ :force => false,
694
+ :system => "1.3.7",
695
695
  }
696
696
 
697
697
  assert_equal expected, @cmd.options
@@ -330,7 +330,7 @@ if you believe they were disclosed to a third party.
330
330
  util_config_file
331
331
 
332
332
  assert_equal({ :rubygems => "701229f217cdf23b1344c7b4b54ca97",
333
- :other => "a5fdbb6ba150cbb83aad2bb2fede64c" }, @cfg.api_keys)
333
+ :other => "a5fdbb6ba150cbb83aad2bb2fede64c" }, @cfg.api_keys)
334
334
  end
335
335
 
336
336
  def test_load_api_keys_bad_permission
@@ -358,6 +358,8 @@ class TestGemDependency < Gem::TestCase
358
358
 
359
359
  assert_equal [b, b_1], dep.to_specs
360
360
 
361
+ require "rubygems/bundler_version_finder"
362
+
361
363
  Gem::BundlerVersionFinder.stub(:bundler_version, Gem::Version.new("1")) do
362
364
  assert_equal [b_1, b], dep.to_specs
363
365
  end
@@ -106,7 +106,7 @@ install:
106
106
  end
107
107
 
108
108
  def test_build_extensions
109
- pend if /mswin/ =~ RUBY_PLATFORM && ENV.key?("GITHUB_ACTIONS") # not working from the beginning
109
+ pend if RUBY_PLATFORM.include?("mswin") && ENV.key?("GITHUB_ACTIONS") # not working from the beginning
110
110
  @spec.extensions << "ext/extconf.rb"
111
111
 
112
112
  ext_dir = File.join @spec.gem_dir, "ext"
@@ -142,7 +142,7 @@ install:
142
142
  end
143
143
 
144
144
  def test_build_extensions_with_gemhome_with_space
145
- pend if /mswin/ =~ RUBY_PLATFORM && ENV.key?("GITHUB_ACTIONS") # not working from the beginning
145
+ pend if RUBY_PLATFORM.include?("mswin") && ENV.key?("GITHUB_ACTIONS") # not working from the beginning
146
146
  new_gemhome = File.join @tempdir, "gem home"
147
147
  File.rename(@gemhome, new_gemhome)
148
148
  @gemhome = new_gemhome
@@ -163,7 +163,7 @@ install:
163
163
  false
164
164
  end
165
165
  end
166
- pend if /mswin/ =~ RUBY_PLATFORM && ENV.key?("GITHUB_ACTIONS") # not working from the beginning
166
+ pend if RUBY_PLATFORM.include?("mswin") && ENV.key?("GITHUB_ACTIONS") # not working from the beginning
167
167
 
168
168
  @spec.extensions << "ext/extconf.rb"
169
169
 
@@ -4,9 +4,9 @@ version = 3
4
4
 
5
5
  [[package]]
6
6
  name = "aho-corasick"
7
- version = "0.7.18"
7
+ version = "0.7.20"
8
8
  source = "registry+https://github.com/rust-lang/crates.io-index"
9
- checksum = "1e37cfd5e7657ada45f742d6e99ca5788580b5c529dc78faf11ece6dc702656f"
9
+ checksum = "cc936419f96fa211c1b9166887b38e5e40b19958e5b895be7c1f93adec7071ac"
10
10
  dependencies = [
11
11
  "memchr",
12
12
  ]
@@ -53,9 +53,9 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
53
53
 
54
54
  [[package]]
55
55
  name = "clang-sys"
56
- version = "1.3.3"
56
+ version = "1.4.0"
57
57
  source = "registry+https://github.com/rust-lang/crates.io-index"
58
- checksum = "5a050e2153c5be08febd6734e29298e844fdb0fa21aeddd63b4eb7baa106c69b"
58
+ checksum = "fa2e27ae6ab525c3d369ded447057bca5438d86dc3a68f6faafb8269ba82ebf3"
59
59
  dependencies = [
60
60
  "glob",
61
61
  "libc",
@@ -89,29 +89,20 @@ checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55"
89
89
 
90
90
  [[package]]
91
91
  name = "libc"
92
- version = "0.2.126"
92
+ version = "0.2.138"
93
93
  source = "registry+https://github.com/rust-lang/crates.io-index"
94
- checksum = "349d5a591cd28b49e1d1037471617a32ddcda5731b99419008085f72d5a53836"
94
+ checksum = "db6d7e329c562c5dfab7a46a2afabc8b987ab9a4834c9d1ca04dc54c1546cef8"
95
95
 
96
96
  [[package]]
97
97
  name = "libloading"
98
- version = "0.7.3"
98
+ version = "0.7.4"
99
99
  source = "registry+https://github.com/rust-lang/crates.io-index"
100
- checksum = "efbc0f03f9a775e9f6aed295c6a1ba2253c5757a9e03d55c6caa46a681abcddd"
100
+ checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f"
101
101
  dependencies = [
102
102
  "cfg-if",
103
103
  "winapi",
104
104
  ]
105
105
 
106
- [[package]]
107
- name = "linkify"
108
- version = "0.9.0"
109
- source = "registry+https://github.com/rust-lang/crates.io-index"
110
- checksum = "96dd5884008358112bc66093362197c7248ece00d46624e2cf71e50029f8cff5"
111
- dependencies = [
112
- "memchr",
113
- ]
114
-
115
106
  [[package]]
116
107
  name = "memchr"
117
108
  version = "2.5.0"
@@ -142,48 +133,47 @@ checksum = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099"
142
133
 
143
134
  [[package]]
144
135
  name = "proc-macro2"
145
- version = "1.0.40"
136
+ version = "1.0.47"
146
137
  source = "registry+https://github.com/rust-lang/crates.io-index"
147
- checksum = "dd96a1e8ed2596c337f8eae5f24924ec83f5ad5ab21ea8e455d3566c69fbcaf7"
138
+ checksum = "5ea3d908b0e36316caf9e9e2c4625cdde190a7e6f440d794667ed17a1855e725"
148
139
  dependencies = [
149
140
  "unicode-ident",
150
141
  ]
151
142
 
152
143
  [[package]]
153
144
  name = "quote"
154
- version = "1.0.20"
145
+ version = "1.0.21"
155
146
  source = "registry+https://github.com/rust-lang/crates.io-index"
156
- checksum = "3bcdf212e9776fbcb2d23ab029360416bb1706b1aea2d1a5ba002727cbcab804"
147
+ checksum = "bbe448f377a7d6961e30f5955f9b8d106c3f5e449d493ee1b125c1d43c2b5179"
157
148
  dependencies = [
158
149
  "proc-macro2",
159
150
  ]
160
151
 
161
152
  [[package]]
162
153
  name = "rb-sys"
163
- version = "0.9.37"
154
+ version = "0.9.52"
164
155
  source = "registry+https://github.com/rust-lang/crates.io-index"
165
- checksum = "5ba942b6777ea18ded013b267023a9c98994557e6539e43740de9e75084cb124"
156
+ checksum = "02fffdb0162fc4cc1b6509b2d9b32a75f7e7ed392f58bde639e0c33b23e74b97"
166
157
  dependencies = [
167
158
  "rb-sys-build",
168
159
  ]
169
160
 
170
161
  [[package]]
171
162
  name = "rb-sys-build"
172
- version = "0.9.37"
163
+ version = "0.9.52"
173
164
  source = "registry+https://github.com/rust-lang/crates.io-index"
174
- checksum = "d35109e1a11ef8d1a988db242ab2ba2e80170f9f5a28f88ab30184a2cea8e09b"
165
+ checksum = "85d1a236755f879fc155d16d9ba4cd3b1975fd52ef6a28113702ae3881b73c03"
175
166
  dependencies = [
176
167
  "bindgen",
177
- "linkify",
178
168
  "regex",
179
169
  "shell-words",
180
170
  ]
181
171
 
182
172
  [[package]]
183
173
  name = "regex"
184
- version = "1.5.6"
174
+ version = "1.7.0"
185
175
  source = "registry+https://github.com/rust-lang/crates.io-index"
186
- checksum = "d83f127d94bdbcda4c8cc2e50f6f84f4b611f69c902699ca385a39c3a75f9ff1"
176
+ checksum = "e076559ef8e241f2ae3479e36f97bd5741c0330689e217ad51ce2c76808b868a"
187
177
  dependencies = [
188
178
  "aho-corasick",
189
179
  "memchr",
@@ -192,9 +182,9 @@ dependencies = [
192
182
 
193
183
  [[package]]
194
184
  name = "regex-syntax"
195
- version = "0.6.26"
185
+ version = "0.6.28"
196
186
  source = "registry+https://github.com/rust-lang/crates.io-index"
197
- checksum = "49b3de9ec5dc0a3417da371aab17d729997c15010e7fd24ff707773a33bddb64"
187
+ checksum = "456c603be3e8d448b072f410900c09faf164fbce2d480456f50eea6e25f9c848"
198
188
 
199
189
  [[package]]
200
190
  name = "rustc-hash"
@@ -216,9 +206,9 @@ checksum = "43b2853a4d09f215c24cc5489c992ce46052d359b5109343cbafbf26bc62f8a3"
216
206
 
217
207
  [[package]]
218
208
  name = "unicode-ident"
219
- version = "1.0.1"
209
+ version = "1.0.5"
220
210
  source = "registry+https://github.com/rust-lang/crates.io-index"
221
- checksum = "5bd2fe26506023ed7b5e1e315add59d6f584c621d037f9368fea9cfb988f368c"
211
+ checksum = "6ceab39d59e4c9499d4e5a8ee0e2735b891bb7308ac83dfb4e80cad195c9f6f3"
222
212
 
223
213
  [[package]]
224
214
  name = "winapi"
@@ -7,4 +7,4 @@ edition = "2021"
7
7
  crate-type = ["cdylib"]
8
8
 
9
9
  [dependencies]
10
- rb-sys = "0.9.37"
10
+ rb-sys = "0.9.52"