From 141ef373396a4c19a619a24647bc323dc853c6ac Mon Sep 17 00:00:00 2001 From: Carlos Antonio da Silva Date: Tue, 21 Oct 2025 17:28:05 -0300 Subject: [PATCH] Add Ruby 3.4 & build updates (#5801) Update bundle to avoid 3.4 mutex_m require error. Test against Rails 7.0 branch which contains Ruby 3.4 fixes. Update changelog to mention Rails < 7.0 support being dropped. Builds on top of https://github.com/heartcombo/devise/pull/5770 Closes https://github.com/heartcombo/devise/pull/5776 Closes https://github.com/heartcombo/devise/pull/5761 --- .github/workflows/test.yml | 1 + CHANGELOG.md | 3 +- Gemfile.lock | 150 ++++++++++++++++++++----------------- gemfiles/Gemfile-rails-7-0 | 2 +- 4 files changed, 86 insertions(+), 70 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index ec8aa990..961fc470 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -13,6 +13,7 @@ jobs: - gemfiles/Gemfile-rails-7-2 - gemfiles/Gemfile-rails-8-0 ruby: + - '3.4' - '3.3' - '3.2' - '3.1' diff --git a/CHANGELOG.md b/CHANGELOG.md index 28c1240b..95f92d3c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,7 @@ * breaking changes * Drop support to Ruby < 2.7 - * Drop support to Rails < 6.0 + * Drop support to Rails < 7.0 * Remove `SecretKeyFinder` and use `app.secret_key_base` as the default secret key for `Devise.secret_key` if a custom `Devise.secret_key` is not provided. This is potentially a breaking change because Devise previously used the following order to find a secret key: @@ -18,6 +18,7 @@ * Removed deprecations warning output for `Devise::Models::Authenticatable::BLACKLIST_FOR_SERIALIZATION` (@soartec-lab) * Add Rails 8 support. - Routes are lazy-loaded by default in test and development environments now so Devise loads them before `Devise.mappings` call. + * Add Ruby 3.4 support. * Password length validator is changed from ``` diff --git a/Gemfile.lock b/Gemfile.lock index a39d4a21..3d866346 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -94,36 +94,38 @@ GEM securerandom (>= 0.3) tzinfo (~> 2.0, >= 2.0.5) uri (>= 0.13.1) - base64 (0.1.1) - bcrypt (3.1.19) - bigdecimal (3.1.4) - builder (3.2.4) + base64 (0.3.0) + bcrypt (3.1.20) + bigdecimal (3.3.1) + builder (3.3.0) concurrent-ruby (1.3.5) - connection_pool (2.4.1) + connection_pool (2.5.4) crass (1.0.6) date (3.4.1) - drb (2.1.1) - ruby2_keywords - erubi (1.12.0) - faraday (2.7.11) - base64 - faraday-net_http (>= 2.0, < 3.1) - ruby2_keywords (>= 0.0.4) - faraday-net_http (3.0.2) + drb (2.2.3) + erb (5.1.1) + erubi (1.13.1) + faraday (2.14.0) + faraday-net_http (>= 2.0, < 3.5) + json + logger + faraday-net_http (3.4.1) + net-http (>= 0.5.0) globalid (1.3.0) activesupport (>= 6.1) hashie (5.0.0) - i18n (1.14.1) + i18n (1.14.7) concurrent-ruby (~> 1.0) - io-console (0.6.0) - irb (1.15.1) + io-console (0.8.1) + irb (1.15.2) pp (>= 0.6.0) rdoc (>= 4.0.0) reline (>= 0.4.2) json (2.15.1) - jwt (2.7.1) - logger (1.6.6) - loofah (2.21.3) + jwt (3.1.2) + base64 + logger (1.7.0) + loofah (2.24.1) crass (~> 1.0.2) nokogiri (>= 1.12.0) mail (2.8.1) @@ -133,11 +135,14 @@ GEM net-smtp marcel (1.1.0) mini_mime (1.1.5) - mini_portile2 (2.8.4) - minitest (5.20.0) - mocha (2.1.0) + mini_portile2 (2.8.9) + minitest (5.26.0) + mocha (2.7.1) ruby2_keywords (>= 0.0.5) - multi_xml (0.6.0) + multi_xml (0.7.2) + bigdecimal (~> 3.1) + net-http (0.6.0) + uri net-imap (0.5.12) date net-protocol @@ -148,48 +153,56 @@ GEM net-smtp (0.5.1) net-protocol nio4r (2.7.4) - nokogiri (1.15.4) + nokogiri (1.18.10) mini_portile2 (~> 2.8.2) racc (~> 1.4) - oauth2 (2.0.9) - faraday (>= 0.17.3, < 3.0) - jwt (>= 1.0, < 3.0) + oauth2 (2.0.17) + faraday (>= 0.17.3, < 4.0) + jwt (>= 1.0, < 4.0) + logger (~> 1.2) multi_xml (~> 0.5) rack (>= 1.2, < 4) - snaky_hash (~> 2.0) - version_gem (~> 1.1) - omniauth (2.1.1) + snaky_hash (~> 2.0, >= 2.0.3) + version_gem (~> 1.1, >= 1.1.9) + omniauth (2.1.4) hashie (>= 3.4.6) + logger rack (>= 2.2.3) rack-protection - omniauth-facebook (9.0.0) - omniauth-oauth2 (~> 1.2) + omniauth-facebook (10.0.0) + bigdecimal + omniauth-oauth2 (>= 1.2, < 3) omniauth-oauth2 (1.8.0) oauth2 (>= 1.4, < 3) omniauth (~> 2.0) - omniauth-openid (2.0.1) - omniauth (>= 1.0, < 3.0) - rack-openid (~> 1.4.0) + omniauth-openid (2.0.2) + omniauth (>= 1.1) + rack-openid (~> 1.4) + ruby-openid (~> 2.1, >= 2.1.8) + version_gem (~> 1.1, >= 1.1.8) orm_adapter (0.5.0) - pp (0.6.2) + pp (0.6.3) prettyprint prettyprint (0.2.0) - psych (5.1.0) + psych (5.2.6) + date stringio - racc (1.7.1) - rack (2.2.8) + racc (1.8.1) + rack (3.2.3) rack-openid (1.4.2) rack (>= 1.1.0) ruby-openid (>= 2.1.8) - rack-protection (3.1.0) - rack (~> 2.2, >= 2.2.4) - rack-session (1.0.1) - rack (< 3) - rack-test (2.1.0) + rack-protection (4.2.1) + base64 (>= 0.1.0) + logger (>= 1.6.0) + rack (>= 3.0.0, < 4) + rack-session (2.1.1) + base64 (>= 0.1.0) + rack (>= 3.0.0) + rack-test (2.2.0) rack (>= 1.3) - rackup (1.0.0) - rack (< 3) - webrick + rackup (2.2.1) + rack (>= 3) rails (8.1.0.rc1) actioncable (= 8.1.0.rc1) actionmailbox (= 8.1.0.rc1) @@ -204,13 +217,13 @@ GEM activesupport (= 8.1.0.rc1) bundler (>= 1.15.0) railties (= 8.1.0.rc1) - rails-dom-testing (2.2.0) + rails-dom-testing (2.3.0) activesupport (>= 5.0.0) minitest nokogiri (>= 1.6) - rails-html-sanitizer (1.6.0) + rails-html-sanitizer (1.6.2) loofah (~> 2.21) - nokogiri (~> 1.14) + nokogiri (>= 1.15.7, != 1.16.7, != 1.16.6, != 1.16.5, != 1.16.4, != 1.16.3, != 1.16.2, != 1.16.1, != 1.16.0.rc1, != 1.16.0) railties (8.1.0.rc1) actionpack (= 8.1.0.rc1) activesupport (= 8.1.0.rc1) @@ -220,45 +233,46 @@ GEM thor (~> 1.0, >= 1.2.2) tsort (>= 0.2) zeitwerk (~> 2.6) - rake (13.0.6) - rdoc (6.5.0) + rake (13.3.0) + rdoc (6.15.0) + erb psych (>= 4.0.0) - reline (0.6.0) + tsort + reline (0.6.2) io-console (~> 0.5) - responders (3.1.0) - actionpack (>= 5.2) - railties (>= 5.2) - rexml (3.2.6) + responders (3.2.0) + actionpack (>= 7.0) + railties (>= 7.0) + rexml (3.4.4) ruby-openid (2.9.2) ruby2_keywords (0.0.5) securerandom (0.4.1) - snaky_hash (2.0.1) - hashie - version_gem (~> 1.1, >= 1.1.1) - sqlite3 (2.6.0) + snaky_hash (2.0.3) + hashie (>= 0.1.0, < 6) + version_gem (>= 1.1.8, < 3) + sqlite3 (2.7.4) mini_portile2 (~> 2.8.0) - stringio (3.0.8) - thor (1.2.2) - timecop (0.9.8) + stringio (3.1.7) + thor (1.4.0) + timecop (0.9.10) timeout (0.4.3) tsort (0.2.0) tzinfo (2.0.6) concurrent-ruby (~> 1.0) - uri (1.0.3) + uri (1.0.4) useragent (0.16.11) - version_gem (1.1.3) + version_gem (1.1.9) warden (1.2.9) rack (>= 2.0.9) webrat (0.7.3) nokogiri (>= 1.2.0) rack (>= 1.0) rack-test (>= 0.5.3) - webrick (1.8.1) websocket-driver (0.8.0) base64 websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - zeitwerk (2.6.12) + zeitwerk (2.7.3) PLATFORMS ruby diff --git a/gemfiles/Gemfile-rails-7-0 b/gemfiles/Gemfile-rails-7-0 index 468b25e2..c155e8cb 100644 --- a/gemfiles/Gemfile-rails-7-0 +++ b/gemfiles/Gemfile-rails-7-0 @@ -2,7 +2,7 @@ source "https://rubygems.org" gemspec path: ".." -gem "rails", "~> 7.0.0" +gem "rails", "~> 7.0.0", github: "rails/rails", branch: "7-0-stable" gem "omniauth" gem "omniauth-oauth2" gem "rdoc"