From 0c5230477dde5cf13853cf39e1a6f7ffeba44dee Mon Sep 17 00:00:00 2001 From: "Daniel (dB.) Doubrovkine" Date: Fri, 23 Oct 2026 13:17:19 -0400 Subject: [PATCH] Upgrade Ruby to 4.0.9 and refresh dependencies Update application and CI Ruby, non-Stripe gems, and the Firefox/geckodriver pair. Refresh the existing lint baseline and apply the required spacing correction. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .github/workflows/lint.yml | 2 +- .github/workflows/test.yml | 6 +- .rubocop_todo.yml | 6 +- CHANGELOG.md | 1 + Gemfile | 2 +- Gemfile.lock | 167 +++++++++--------- .../endpoints/it_behaves_like_a_cursor_api.rb | 1 + 7 files changed, 91 insertions(+), 94 deletions(-) diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 7891d88..ccce461 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -9,6 +9,6 @@ jobs: - uses: actions/checkout@v6 - uses: ruby/setup-ruby@v1 with: - ruby-version: "4.0.2" + ruby-version: "4.0.9" bundler-cache: true - run: bundle exec rubocop diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index f737084..cead095 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -9,16 +9,16 @@ jobs: - uses: actions/checkout@v6 - uses: browser-actions/setup-firefox@v1 with: - firefox-version: '143.0.3' + firefox-version: '157.0' - uses: browser-actions/setup-geckodriver@latest with: - geckodriver-version: "0.36.0" + geckodriver-version: "0.37.1" - uses: supercharge/mongodb-github-action@v1 with: mongodb-version: "8.0" - uses: ruby/setup-ruby@v1 with: - ruby-version: "4.0.2" + ruby-version: "4.0.9" bundler-cache: true - uses: GabrielBB/xvfb-action@v1 with: diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml index a4740d6..ef6c16c 100644 --- a/.rubocop_todo.yml +++ b/.rubocop_todo.yml @@ -1,6 +1,6 @@ # This configuration was generated by # `rubocop --auto-gen-config` -# on 2026-05-18 22:08:00 UTC using RuboCop version 1.86.2. +# on 2026-10-23 17:16:52 UTC using RuboCop version 1.92.1. # The point is for the user to remove these configuration records # one by one as the offenses are removed from the code base. # Note that changes in the inspected code, or installation of new @@ -75,7 +75,7 @@ RSpec/ContextWording: # Offense count: 9 # Configuration parameters: CountAsOne. RSpec/ExampleLength: - Max: 38 + Max: 11 # Offense count: 1 # Configuration parameters: AssignmentOnly. @@ -96,7 +96,7 @@ RSpec/MessageSpies: # Offense count: 21 RSpec/MultipleExpectations: - Max: 10 + Max: 6 # Offense count: 1 # Configuration parameters: AllowSubject. diff --git a/CHANGELOG.md b/CHANGELOG.md index ee46817..0c6e118 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,6 @@ ### Changelog +* 2026/10/23: Upgrade to Ruby 4.0.9 and refresh dependencies and CI browser tooling - [@dblock](https://github.com/dblock), [@Copilot](https://github.com/apps/copilot-swe-agent). * 2025/09/29: Upgraded to Ruby 3.4.6 - [@dblock](https://github.com/dblock). * 2020/11/22. [#22](https://github.com/slack-ruby/slack-shellbot/pull/22): Migrate app to granular scopes and events API - [@dblock](https://github.com/dblock). * 2018/9/10, [#6](https://github.com/slack-ruby/slack-shellbot/issues/6): Fix `Unmatched double quote` errors - [@dblock](https://github.com/dblock). diff --git a/Gemfile b/Gemfile index 7f3b18f..1baaf8e 100644 --- a/Gemfile +++ b/Gemfile @@ -1,6 +1,6 @@ source 'https://rubygems.org' -ruby '4.0.2' +ruby '4.0.9' gem 'irb' gem 'kaminari-grape' diff --git a/Gemfile.lock b/Gemfile.lock index 887f5fa..c2df505 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,9 +1,9 @@ GEM remote: https://rubygems.org/ specs: - activemodel (8.1.3) - activesupport (= 8.1.3) - activesupport (8.1.3) + activemodel (8.1.4) + activesupport (= 8.1.4) + activesupport (8.1.4) base64 bigdecimal concurrent-ruby (~> 1.0, >= 1.3.1) @@ -19,14 +19,12 @@ GEM addressable (2.9.0) public_suffix (>= 2.0.2, < 8.0) ast (2.4.3) - async (2.39.0) + async (2.46.0) console (~> 1.29) fiber-annotation - io-event (~> 1.11) - metrics (~> 0.12) - traces (~> 0.18) + io-event (~> 1.21) base64 (0.3.0) - bigdecimal (4.1.2) + bigdecimal (4.1.3) bson (5.2.0) capybara (3.40.0) addressable @@ -37,9 +35,9 @@ GEM rack-test (>= 0.6.3) regexp_parser (>= 1.5, < 3.0) xpath (~> 3.2) - concurrent-ruby (1.3.7) + concurrent-ruby (1.3.8) connection_pool (3.0.2) - console (1.34.3) + console (1.38.0) fiber-annotation fiber-local (~> 1.1) json @@ -50,10 +48,9 @@ GEM database_cleaner-mongoid (2.0.1) database_cleaner-core (~> 2.0.0) mongoid - date (3.5.1) declarative (0.0.20) diff-lcs (1.6.2) - domain_name (0.6.20240107) + domain_name (0.7.20261007) drb (2.2.3) dry-configurable (1.4.0) dry-core (~> 1.0) @@ -75,22 +72,22 @@ GEM dry-inflector (~> 1.0) dry-logic (~> 1.4) zeitwerk (~> 2.6) - erb (6.0.4) + erb (6.0.7) fabrication (3.0.0) faker (3.8.0) i18n (>= 1.8.11, < 2) - faraday (2.14.2) - faraday-net_http (>= 2.0, < 3.5) + faraday (2.15.0) + faraday-net_http (>= 2.0, < 3.6) json logger faraday-follow_redirects (0.5.0) faraday (>= 1, < 3) - faraday-mashify (1.0.2) + faraday-mashify (1.0.3) faraday (~> 2.0) hashie faraday-multipart (1.2.0) multipart-post (~> 2.0) - faraday-net_http (3.4.2) + faraday-net_http (3.5.0) net-http (~> 0.5) faraday-rack (2.1.3) faraday (~> 2.0) @@ -102,111 +99,106 @@ GEM fiber-storage (1.0.1) foreman (0.90.0) thor (~> 1.4) - gli (2.22.2) - ostruct - grape (3.2.1) + grape (4.0.1) activesupport (>= 7.2) - dry-configurable + dry-configurable (>= 1.0) dry-types (>= 1.1) - mustermann-grape (~> 1.1.0) - rack (>= 2) - zeitwerk + mustermann (>= 4.0) + rack (>= 2.2.4) + zeitwerk (>= 2.6) grape-roar (0.5.0) grape multi_json roar (~> 1.1.0) - grape-swagger (2.1.4) - grape (>= 1.7, < 4.0) + grape-swagger (2.2.0) + grape (>= 2.1, < 5.0) hashdiff (1.2.1) - hashie (5.1.0) + hashie (5.2.0) logger http-accept (1.7.0) http-cookie (1.1.6) domain_name (~> 0.5) - hyperclient (2.0.0) + hyperclient (2.1.0) addressable faraday (>= 2) faraday-follow_redirects faraday_hal_middleware (>= 0.2) - i18n (1.14.8) + i18n (1.15.2) concurrent-ruby (~> 1.0) - io-console (0.8.2) - io-event (1.16.0) + io-console (0.9.4) + io-event (1.22.3) irb (1.18.0) pp (>= 0.6.0) prism (>= 1.3.0) rdoc (>= 4.0.0) reline (>= 0.4.2) - json (2.19.9) - kaminari-core (1.2.2) + json (3.1.0) + kaminari-core (1.3.0) kaminari-grape (1.0.1) grape kaminari-core (~> 1.0) - language_server-protocol (3.17.0.5) + language_server-protocol (3.17.0.6) lint_roller (1.1.0) logger (1.7.0) mailchimp_api_v3 (0.2.18) rest-client (~> 2) matrix (0.4.3) - metrics (0.15.0) mime-types (3.7.0) logger mime-types-data (~> 3.2025, >= 3.2025.0507) - mime-types-data (3.2026.0414) + mime-types-data (3.2026.1020) mini_mime (1.1.5) mini_portile2 (2.8.9) minitest (6.0.6) drb (~> 2.0) prism (~> 1.5) - mongo (2.24.0) + mongo (2.26.0) base64 bson (>= 4.14.1, < 6.0.0) - mongoid (9.1.0) + mongoid (9.1.1) activemodel (>= 5.1, < 8.2, != 7.0.0) concurrent-ruby (>= 1.0.5, < 2.0) mongo (>= 2.18.0, < 3.0.0) ostruct - mongoid-compatibility (1.0.0) + mongoid-compatibility (1.1.0) activesupport mongoid (>= 2.0) - mongoid-scroll (2.0.0) + mongoid-scroll (2.0.1) i18n mongoid (>= 6.0) - mongoid-shell (0.4.6) + mongoid-shell (0.5.1) i18n mongoid (>= 3.0.0) mongoid-compatibility - multi_json (1.21.1) + multi_json (1.21.2) multipart-post (2.4.1) - mustermann (3.1.1) - mustermann-grape (1.1.0) - mustermann (>= 1.0.0) - net-http (0.9.1) + mustermann (4.0.1) + net-http (0.10.0) + net-protocol (>= 0.3.0) uri (>= 0.11.1) + net-protocol (0.4.0) + timeout netrc (0.11.0) - newrelic_rpm (10.5.0) + newrelic_rpm (10.9.1) logger nio4r (2.7.5) - nokogiri (1.19.3) + nokogiri (1.19.4) mini_portile2 (~> 2.8.2) racc (~> 1.4) ostruct (0.6.3) - parallel (1.28.0) - parser (3.3.11.1) + parallel (2.3.0) + parser (3.3.13.0) ast (~> 2.4.1) racc - pp (0.6.3) + pp (0.6.4) prettyprint - prettyprint (0.2.0) + prettyprint (0.2.1) prism (1.9.0) - psych (5.3.1) - date - stringio public_suffix (7.0.5) - puma (7.2.0) + puma (8.0.2) nio4r (~> 2.0) racc (1.8.1) - rack (3.2.6) + rack (3.2.7) rack-cors (3.0.0) logger rack (>= 3.0.14) @@ -215,20 +207,25 @@ GEM rack rack-server-pages (0.2.1) rack - rack-test (2.2.0) + rack-test (2.3.0) rack (>= 1.3) rackup (2.3.1) rack (>= 3) rainbow (3.1.1) rake (13.4.2) - rdoc (7.2.0) + rbs (4.2.0) + logger + prism (>= 1.6.0) + tsort + rdoc (8.1.0) erb - psych (>= 4.0.0) + prism (>= 1.6.0) + rbs (>= 4.0.0) tsort - regexp_parser (2.12.0) - reline (0.6.3) + regexp_parser (2.13.1) + reline (0.7.0) io-console (~> 0.5) - representable (3.2.0) + representable (3.3.1) declarative (< 0.1.0) trailblazer-option (>= 0.1.1, < 0.2.0) uber (< 0.2.0) @@ -253,36 +250,36 @@ GEM diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.13.0) rspec-support (3.13.7) - rubocop (1.86.2) - json (~> 2.3) + rubocop (1.92.1) + json (>= 2.3) language_server-protocol (~> 3.17.0.2) lint_roller (~> 1.1.0) parallel (>= 1.10) parser (>= 3.3.0.2) rainbow (>= 2.2.2, < 4.0) - regexp_parser (>= 2.9.3, < 3.0) + regexp_parser (>= 2.11.3, < 3.0) rubocop-ast (>= 1.49.0, < 2.0) ruby-progressbar (~> 1.7) unicode-display_width (>= 2.4.0, < 4.0) - rubocop-ast (1.49.1) + rubocop-ast (1.50.0) parser (>= 3.3.7.2) prism (~> 1.7) - rubocop-capybara (2.23.0) + rubocop-capybara (3.1.0) lint_roller (~> 1.1) - rubocop (~> 1.81) + rubocop (~> 1.89) rubocop-rake (0.7.1) lint_roller (~> 1.1) rubocop (>= 1.72.1) - rubocop-rspec (3.9.0) + rubocop-rspec (3.10.2) lint_roller (~> 1.1) - rubocop (~> 1.81) + regexp_parser (>= 2.0) + rubocop (~> 1.86, >= 1.86.2) ruby-progressbar (1.13.0) - rubyzip (3.4.0) + rubyzip (3.7.0) securerandom (0.4.1) - selenium-webdriver (4.44.0) + selenium-webdriver (4.51.0) base64 (~> 0.2) logger (~> 1.4) - rexml (~> 3.2, >= 3.2.5) rubyzip (>= 1.2.2, < 4.0) websocket (~> 1.0) slack-ruby-bot-server (2.2.0) @@ -302,34 +299,32 @@ GEM slack-ruby-bot-server-mailchimp (0.3.0) mailchimp_api_v3 slack-ruby-bot-server (>= 2.0.1) - slack-ruby-client (3.1.0) + slack-ruby-client (3.3.0) faraday (>= 2.0.1) faraday-mashify faraday-multipart - gli hashie logger - stringio (3.2.0) thor (1.5.0) - traces (0.18.2) + timeout (0.6.1) trailblazer-option (0.1.2) tsort (0.2.0) tzinfo (2.0.6) concurrent-ruby (~> 1.0) uber (0.1.0) - unicode-display_width (3.2.0) - unicode-emoji (~> 4.1) - unicode-emoji (4.2.0) - uri (1.1.1) + unicode-display_width (3.3.0) + unicode-emoji (~> 4.3) + unicode-emoji (4.3.0) + uri (1.1.2) vcr (6.4.0) - webmock (3.26.2) + webmock (3.34.0) addressable (>= 2.8.0) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) websocket (1.2.11) xpath (3.2.0) nokogiri (~> 1.8) - zeitwerk (2.8.0) + zeitwerk (2.8.3) PLATFORMS ruby @@ -366,7 +361,7 @@ DEPENDENCIES webmock RUBY VERSION - ruby 4.0.2p0 + ruby 4.0.9 BUNDLED WITH - 2.7.2 + 4.0.21 diff --git a/spec/support/api/endpoints/it_behaves_like_a_cursor_api.rb b/spec/support/api/endpoints/it_behaves_like_a_cursor_api.rb index 75b4370..bba5c47 100644 --- a/spec/support/api/endpoints/it_behaves_like_a_cursor_api.rb +++ b/spec/support/api/endpoints/it_behaves_like_a_cursor_api.rb @@ -1,6 +1,7 @@ shared_examples_for 'a cursor api' do |model| let(:model_s) { model.name.underscore.to_sym } let(:model_ps) { model.name.underscore.pluralize.to_sym } + context model.name do let(:cursor_params) { @cursor_params || {} }