rubygems-update 3.3.27 → 3.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (272) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +29 -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 +48 -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 -18
  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 +37 -33
  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 +285 -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 +190 -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-rust.rb.tt +6 -0
  116. data/bundler/lib/bundler/templates/newgem/ext/newgem/src/lib.rs.tt +12 -0
  117. data/bundler/lib/bundler/templates/newgem/github/workflows/main.yml.tt +10 -0
  118. data/bundler/lib/bundler/templates/newgem/gitignore.tt +3 -0
  119. data/bundler/lib/bundler/templates/newgem/gitlab-ci.yml.tt +8 -0
  120. data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +8 -2
  121. data/bundler/lib/bundler/ui/shell.rb +35 -12
  122. data/bundler/lib/bundler/ui/silent.rb +21 -5
  123. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb +3 -3
  124. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/wrapper.rb +0 -1
  125. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +3 -1
  126. data/bundler/lib/bundler/vendor/fileutils/lib/fileutils.rb +1350 -408
  127. data/bundler/lib/bundler/vendor/net-http-persistent/README.rdoc +1 -1
  128. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +1 -1
  129. data/bundler/lib/bundler/vendor/pub_grub/LICENSE.txt +21 -0
  130. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/assignment.rb +20 -0
  131. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/basic_package_source.rb +189 -0
  132. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/failure_writer.rb +182 -0
  133. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/incompatibility.rb +151 -0
  134. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/package.rb +43 -0
  135. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/partial_solution.rb +121 -0
  136. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/rubygems.rb +45 -0
  137. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/solve_failure.rb +19 -0
  138. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/static_package_source.rb +53 -0
  139. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/term.rb +105 -0
  140. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version.rb +3 -0
  141. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_constraint.rb +124 -0
  142. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_range.rb +409 -0
  143. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_solver.rb +240 -0
  144. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_union.rb +178 -0
  145. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub.rb +31 -0
  146. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +1 -1
  147. data/bundler/lib/bundler/vendor/uri/lib/uri/common.rb +64 -16
  148. data/bundler/lib/bundler/vendor/uri/lib/uri/file.rb +7 -1
  149. data/bundler/lib/bundler/vendor/uri/lib/uri/ftp.rb +2 -1
  150. data/bundler/lib/bundler/vendor/uri/lib/uri/generic.rb +27 -7
  151. data/bundler/lib/bundler/vendor/uri/lib/uri/http.rb +40 -2
  152. data/bundler/lib/bundler/vendor/uri/lib/uri/https.rb +2 -1
  153. data/bundler/lib/bundler/vendor/uri/lib/uri/ldap.rb +1 -1
  154. data/bundler/lib/bundler/vendor/uri/lib/uri/ldaps.rb +2 -1
  155. data/bundler/lib/bundler/vendor/uri/lib/uri/mailto.rb +2 -2
  156. data/bundler/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb +13 -7
  157. data/bundler/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +10 -5
  158. data/bundler/lib/bundler/vendor/uri/lib/uri/version.rb +1 -1
  159. data/bundler/lib/bundler/vendor/uri/lib/uri/ws.rb +1 -2
  160. data/bundler/lib/bundler/vendor/uri/lib/uri/wss.rb +2 -1
  161. data/bundler/lib/bundler/vendor/uri/lib/uri.rb +3 -2
  162. data/bundler/lib/bundler/vendored_persistent.rb +1 -33
  163. data/bundler/lib/bundler/{vendored_tmpdir.rb → vendored_pub_grub.rb} +1 -1
  164. data/bundler/lib/bundler/version.rb +5 -1
  165. data/bundler/lib/bundler/worker.rb +5 -7
  166. data/bundler/lib/bundler.rb +20 -64
  167. data/lib/rubygems/command_manager.rb +2 -2
  168. data/lib/rubygems/commands/fetch_command.rb +1 -1
  169. data/lib/rubygems/commands/install_command.rb +7 -3
  170. data/lib/rubygems/commands/rdoc_command.rb +3 -2
  171. data/lib/rubygems/commands/setup_command.rb +2 -2
  172. data/lib/rubygems/commands/unpack_command.rb +1 -1
  173. data/lib/rubygems/commands/update_command.rb +1 -7
  174. data/lib/rubygems/config_file.rb +33 -0
  175. data/lib/rubygems/core_ext/kernel_warn.rb +1 -2
  176. data/lib/rubygems/defaults.rb +15 -1
  177. data/lib/rubygems/dependency.rb +4 -1
  178. data/lib/rubygems/dependency_installer.rb +24 -24
  179. data/lib/rubygems/exceptions.rb +1 -3
  180. data/lib/rubygems/ext/builder.rb +3 -3
  181. data/lib/rubygems/ext/cargo_builder/link_flag_converter.rb +9 -5
  182. data/lib/rubygems/ext/cargo_builder.rb +15 -20
  183. data/lib/rubygems/ext/ext_conf_builder.rb +2 -0
  184. data/lib/rubygems/indexer.rb +1 -1
  185. data/lib/rubygems/installer.rb +5 -5
  186. data/lib/rubygems/optparse/lib/optparse.rb +20 -15
  187. data/lib/rubygems/package/tar_header.rb +11 -11
  188. data/lib/rubygems/platform.rb +0 -2
  189. data/lib/rubygems/request_set/gem_dependency_api.rb +104 -104
  190. data/lib/rubygems/requirement.rb +7 -7
  191. data/lib/rubygems/resolver/installer_set.rb +1 -1
  192. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph.rb +1 -1
  193. data/lib/rubygems/resolver/molinillo/lib/molinillo/errors.rb +32 -26
  194. data/lib/rubygems/resolver/molinillo/lib/molinillo/gem_metadata.rb +1 -1
  195. data/lib/rubygems/security/policies.rb +40 -40
  196. data/lib/rubygems/security/trust_dir.rb +1 -1
  197. data/lib/rubygems/security.rb +3 -16
  198. data/lib/rubygems/source.rb +2 -2
  199. data/lib/rubygems/specification.rb +37 -49
  200. data/lib/rubygems/specification_policy.rb +14 -0
  201. data/lib/rubygems/stub_specification.rb +2 -2
  202. data/lib/rubygems/text.rb +1 -1
  203. data/lib/rubygems/tsort/lib/tsort.rb +308 -310
  204. data/lib/rubygems/update_suggestion.rb +69 -0
  205. data/lib/rubygems/util.rb +1 -5
  206. data/lib/rubygems/validator.rb +1 -1
  207. data/lib/rubygems.rb +8 -3
  208. data/rubygems-update.gemspec +2 -2
  209. data/test/rubygems/helper.rb +7 -3
  210. data/test/rubygems/test_bundled_ca.rb +1 -1
  211. data/test/rubygems/test_exit.rb +6 -0
  212. data/test/rubygems/test_gem.rb +4 -9
  213. data/test/rubygems/test_gem_bundler_version_finder.rb +2 -1
  214. data/test/rubygems/test_gem_command_manager.rb +1 -1
  215. data/test/rubygems/test_gem_commands_install_command.rb +19 -0
  216. data/test/rubygems/test_gem_commands_setup_command.rb +1 -8
  217. data/test/rubygems/test_gem_commands_update_command.rb +6 -6
  218. data/test/rubygems/test_gem_config_file.rb +1 -1
  219. data/test/rubygems/test_gem_dependency.rb +2 -0
  220. data/test/rubygems/test_gem_ext_builder.rb +3 -3
  221. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/Cargo.lock +22 -32
  222. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/Cargo.toml +1 -1
  223. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.lock +22 -32
  224. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.toml +1 -1
  225. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/src/lib.rs +12 -0
  226. data/test/rubygems/test_gem_ext_cargo_builder.rb +22 -28
  227. data/test/rubygems/test_gem_ext_cargo_builder_link_flag_converter.rb +16 -16
  228. data/test/rubygems/test_gem_ext_cargo_builder_unit.rb +0 -10
  229. data/test/rubygems/test_gem_indexer.rb +39 -20
  230. data/test/rubygems/test_gem_installer.rb +68 -2
  231. data/test/rubygems/test_gem_package_tar_header.rb +13 -13
  232. data/test/rubygems/test_gem_platform.rb +59 -60
  233. data/test/rubygems/test_gem_remote_fetcher.rb +4 -4
  234. data/test/rubygems/test_gem_request_set.rb +2 -2
  235. data/test/rubygems/test_gem_requirement.rb +1 -1
  236. data/test/rubygems/test_gem_resolver_api_set.rb +12 -12
  237. data/test/rubygems/test_gem_resolver_api_specification.rb +19 -19
  238. data/test/rubygems/test_gem_resolver_git_specification.rb +1 -1
  239. data/test/rubygems/test_gem_security_policy.rb +10 -10
  240. data/test/rubygems/test_gem_security_trust_dir.rb +2 -2
  241. data/test/rubygems/test_gem_specification.rb +50 -37
  242. data/test/rubygems/test_gem_uninstaller.rb +1 -1
  243. data/test/rubygems/test_gem_update_suggestion.rb +208 -0
  244. data/test/rubygems/test_kernel.rb +10 -8
  245. data/test/rubygems/test_require.rb +70 -55
  246. metadata +34 -31
  247. data/bundler/lib/bundler/templates/newgem/travis.yml.tt +0 -6
  248. data/bundler/lib/bundler/vendor/molinillo/LICENSE +0 -9
  249. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/delegates/resolution_state.rb +0 -57
  250. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/delegates/specification_provider.rb +0 -88
  251. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/action.rb +0 -36
  252. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +0 -66
  253. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +0 -62
  254. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +0 -63
  255. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +0 -61
  256. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/log.rb +0 -126
  257. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/set_payload.rb +0 -46
  258. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb +0 -36
  259. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb +0 -164
  260. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb +0 -255
  261. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +0 -149
  262. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb +0 -6
  263. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/modules/specification_provider.rb +0 -112
  264. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/modules/ui.rb +0 -67
  265. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +0 -839
  266. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolver.rb +0 -46
  267. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/state.rb +0 -58
  268. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo.rb +0 -11
  269. data/bundler/lib/bundler/vendor/tmpdir/lib/tmpdir.rb +0 -154
  270. data/bundler/lib/bundler/vendored_molinillo.rb +0 -4
  271. data/bundler/lib/bundler/version_ranges.rb +0 -122
  272. /data/bundler/lib/bundler/templates/newgem/ext/newgem/{extconf.rb.tt → extconf-c.rb.tt} +0 -0
@@ -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.27".freeze
11
+ VERSION = "3.4.0".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.27"
5
+ s.version = "3.4.0"
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"