From 1f8bb8154d480d2854b90d47a8e4e1dcf321167a Mon Sep 17 00:00:00 2001 From: Joel Hawksley Date: Fri, 9 Jan 2026 11:51:47 -0700 Subject: [PATCH 01/10] update CI for ruby 4 --- .github/workflows/ci.yml | 2 +- Appraisals | 4 ++-- Gemfile.lock | 2 +- docs/CHANGELOG.md | 4 ++++ gemfiles/rails_8.1.gemfile | 2 +- gemfiles/rails_main.gemfile | 2 +- 6 files changed, 10 insertions(+), 6 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 1866815d2..55d6009bc 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -40,7 +40,7 @@ jobs: rails_version: "7.2" - ruby_version: "3.4" rails_version: "8.0" - - ruby_version: "3.4" + - ruby_version: "4.0" rails_version: "8.1" - ruby_version: "head" rails_version: "main" diff --git a/Appraisals b/Appraisals index 8dd66aa4f..7bbdcf88b 100644 --- a/Appraisals +++ b/Appraisals @@ -34,7 +34,7 @@ appraise "rails-8.0" do end appraise "rails-8.1" do - ruby "~> 3.4.0" + ruby "~> 4.0.0" gem "rails", "~> 8.1.0" @@ -45,7 +45,7 @@ appraise "rails-8.1" do end appraise "rails-main" do - ruby "4.0.0.dev" + ruby "4.1.0.dev" gem "rack", git: "https://github.com/rack/rack", ref: "8a4475a9f416a72e5b02bd7817e4a8ed684f29b0" gem "rails", github: "rails/rails", branch: "main" diff --git a/Gemfile.lock b/Gemfile.lock index 4ccbdef1c..31d2d59ea 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -456,7 +456,7 @@ DEPENDENCIES yard-activesupport-concern (< 1) RUBY VERSION - ruby 3.3.0p0 + ruby 3.4.7p58 BUNDLED WITH 2.6.2 diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index e9639eb01..33efda2f8 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -10,6 +10,10 @@ nav_order: 6 ## main +* Test against Ruby 4.0.0 in CI. + + *Joel Hawksley* + * Fix translation scope resolution in deeply nested component blocks (3+ levels). Translations called inside deeply nested slot blocks using `renders_many`/`renders_one` were incorrectly resolving to an intermediate component's scope instead of the partial's scope where the block was defined. The fix captures the virtual path at block definition time and restores it during block execution, ensuring translations always resolve relative to where the block was created regardless of nesting depth. *Nathaniel Watts* diff --git a/gemfiles/rails_8.1.gemfile b/gemfiles/rails_8.1.gemfile index f68c97352..331c498c0 100644 --- a/gemfiles/rails_8.1.gemfile +++ b/gemfiles/rails_8.1.gemfile @@ -2,7 +2,7 @@ source "https://rubygems.org" -ruby "~> 3.4.0" +ruby "~> 4.0.0" gem "rails", "~> 8.1.0" diff --git a/gemfiles/rails_main.gemfile b/gemfiles/rails_main.gemfile index be6c13594..6e74cecbc 100644 --- a/gemfiles/rails_main.gemfile +++ b/gemfiles/rails_main.gemfile @@ -2,7 +2,7 @@ source "https://rubygems.org" -ruby "4.0.0.dev" +ruby "4.1.0.dev" gem "rails", github: "rails/rails", branch: "main" gem "rack", git: "https://github.com/rack/rack", ref: "8a4475a9f416a72e5b02bd7817e4a8ed684f29b0" From 0715ecd9bb0b978cc7a090038a138275591158ff Mon Sep 17 00:00:00 2001 From: Joel Hawksley Date: Fri, 9 Jan 2026 12:27:01 -0700 Subject: [PATCH 02/10] update bundles --- .tool-versions | 2 +- Gemfile | 2 +- Gemfile.lock | 13 +++---------- gemfiles/rails_8.1.gemfile.lock | 9 +++++++-- 4 files changed, 12 insertions(+), 14 deletions(-) diff --git a/.tool-versions b/.tool-versions index 3f03c7a73..97c86d65e 100644 --- a/.tool-versions +++ b/.tool-versions @@ -1 +1 @@ -ruby 3.4.7 +ruby 4.0.0 diff --git a/Gemfile b/Gemfile index ac626dd0c..a470ad103 100644 --- a/Gemfile +++ b/Gemfile @@ -7,7 +7,7 @@ rails_version = (ENV["RAILS_VERSION"] || "~> 8").to_s gem "rails", (rails_version == "main") ? {git: "https://github.com/rails/rails", ref: "main"} : rails_version -ruby_version = (ENV["RUBY_VERSION"] || "~> 3.4").to_s +ruby_version = (ENV["RUBY_VERSION"] || "~> 4.0").to_s ruby ruby_version group :development, :test do diff --git a/Gemfile.lock b/Gemfile.lock index 31d2d59ea..9242f557c 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -145,14 +145,7 @@ GEM temple (>= 0.8.2) thor tilt - herb (0.8.3-aarch64-linux-gnu) - herb (0.8.3-aarch64-linux-musl) - herb (0.8.3-arm-linux-gnu) - herb (0.8.3-arm-linux-musl) - herb (0.8.3-arm64-darwin) - herb (0.8.3-x86_64-darwin) - herb (0.8.3-x86_64-linux-gnu) - herb (0.8.3-x86_64-linux-musl) + herb (0.8.3) i18n (1.14.8) concurrent-ruby (~> 1.0) io-console (0.8.2) @@ -390,7 +383,7 @@ GEM concurrent-ruby (~> 1.0) unicode-display_width (3.2.0) unicode-emoji (~> 4.1) - unicode-emoji (4.1.0) + unicode-emoji (4.2.0) uri (1.1.1) useragent (0.16.11) warning (1.5.0) @@ -456,7 +449,7 @@ DEPENDENCIES yard-activesupport-concern (< 1) RUBY VERSION - ruby 3.4.7p58 + ruby 4.0.0p0 BUNDLED WITH 2.6.2 diff --git a/gemfiles/rails_8.1.gemfile.lock b/gemfiles/rails_8.1.gemfile.lock index 892d58e7d..19f913a0f 100644 --- a/gemfiles/rails_8.1.gemfile.lock +++ b/gemfiles/rails_8.1.gemfile.lock @@ -145,6 +145,7 @@ GEM temple (>= 0.8.2) thor tilt + herb (0.8.2) herb (0.8.2-aarch64-linux-gnu) herb (0.8.2-aarch64-linux-musl) herb (0.8.2-arm-linux-gnu) @@ -183,6 +184,7 @@ GEM matrix (0.4.3) method_source (1.1.0) mini_mime (1.1.5) + mini_portile2 (2.8.9) minitest (5.26.2) net-imap (0.5.12) date @@ -194,6 +196,9 @@ GEM net-smtp (0.5.1) net-protocol nio4r (2.7.5) + nokogiri (1.18.10) + mini_portile2 (~> 2.8.2) + racc (~> 1.4) nokogiri (1.18.10-aarch64-linux-gnu) racc (~> 1.4) nokogiri (1.18.10-aarch64-linux-musl) @@ -390,7 +395,7 @@ GEM concurrent-ruby (~> 1.0) unicode-display_width (3.2.0) unicode-emoji (~> 4.1) - unicode-emoji (4.1.0) + unicode-emoji (4.2.0) uri (1.1.1) useragent (0.16.11) warning (1.5.0) @@ -456,7 +461,7 @@ DEPENDENCIES yard-activesupport-concern (< 1) RUBY VERSION - ruby 3.4.7p58 + ruby 4.0.0p0 BUNDLED WITH 2.6.7 From 784761a7eab14124cda04b64072c33e8c36d00c2 Mon Sep 17 00:00:00 2001 From: Joel Hawksley Date: Fri, 9 Jan 2026 12:28:03 -0700 Subject: [PATCH 03/10] use rails 8.1 by default --- Gemfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile b/Gemfile index a470ad103..4256e33e4 100644 --- a/Gemfile +++ b/Gemfile @@ -3,7 +3,7 @@ source "https://rubygems.org" gemspec -rails_version = (ENV["RAILS_VERSION"] || "~> 8").to_s +rails_version = (ENV["RAILS_VERSION"] || "~> 8.1").to_s gem "rails", (rails_version == "main") ? {git: "https://github.com/rails/rails", ref: "main"} : rails_version From febc000256808eb82a113f41f7cf32766338288a Mon Sep 17 00:00:00 2001 From: Joel Hawksley Date: Fri, 9 Jan 2026 13:06:24 -0700 Subject: [PATCH 04/10] gemfile.lock for nokogiri --- Gemfile | 1 + Gemfile.lock | 164 +++++++++++++++++++++++++++------------------------ 2 files changed, 87 insertions(+), 78 deletions(-) diff --git a/Gemfile b/Gemfile index 4256e33e4..54bbf6603 100644 --- a/Gemfile +++ b/Gemfile @@ -26,6 +26,7 @@ group :development, :test do gem "m", "~> 1" gem "method_source", "~> 1" gem "minitest", "~> 6" + gem "nokogiri", "1.19.0" gem "propshaft", "~> 1" gem "puma", ">= 6" gem "rake", "~> 13" diff --git a/Gemfile.lock b/Gemfile.lock index 9242f557c..b25a36fdc 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -11,29 +11,29 @@ GEM specs: action_text-trix (2.1.16) railties - actioncable (8.1.1) - actionpack (= 8.1.1) - activesupport (= 8.1.1) + actioncable (8.1.2) + actionpack (= 8.1.2) + activesupport (= 8.1.2) nio4r (~> 2.0) websocket-driver (>= 0.6.1) zeitwerk (~> 2.6) - actionmailbox (8.1.1) - actionpack (= 8.1.1) - activejob (= 8.1.1) - activerecord (= 8.1.1) - activestorage (= 8.1.1) - activesupport (= 8.1.1) + actionmailbox (8.1.2) + actionpack (= 8.1.2) + activejob (= 8.1.2) + activerecord (= 8.1.2) + activestorage (= 8.1.2) + activesupport (= 8.1.2) mail (>= 2.8.0) - actionmailer (8.1.1) - actionpack (= 8.1.1) - actionview (= 8.1.1) - activejob (= 8.1.1) - activesupport (= 8.1.1) + actionmailer (8.1.2) + actionpack (= 8.1.2) + actionview (= 8.1.2) + activejob (= 8.1.2) + activesupport (= 8.1.2) mail (>= 2.8.0) rails-dom-testing (~> 2.2) - actionpack (8.1.1) - actionview (= 8.1.1) - activesupport (= 8.1.1) + actionpack (8.1.2) + actionview (= 8.1.2) + activesupport (= 8.1.2) nokogiri (>= 1.8.5) rack (>= 2.2.4) rack-session (>= 1.0.1) @@ -41,36 +41,36 @@ GEM rails-dom-testing (~> 2.2) rails-html-sanitizer (~> 1.6) useragent (~> 0.16) - actiontext (8.1.1) + actiontext (8.1.2) action_text-trix (~> 2.1.15) - actionpack (= 8.1.1) - activerecord (= 8.1.1) - activestorage (= 8.1.1) - activesupport (= 8.1.1) + actionpack (= 8.1.2) + activerecord (= 8.1.2) + activestorage (= 8.1.2) + activesupport (= 8.1.2) globalid (>= 0.6.0) nokogiri (>= 1.8.5) - actionview (8.1.1) - activesupport (= 8.1.1) + actionview (8.1.2) + activesupport (= 8.1.2) builder (~> 3.1) erubi (~> 1.11) rails-dom-testing (~> 2.2) rails-html-sanitizer (~> 1.6) - activejob (8.1.1) - activesupport (= 8.1.1) + activejob (8.1.2) + activesupport (= 8.1.2) globalid (>= 0.3.6) - activemodel (8.1.1) - activesupport (= 8.1.1) - activerecord (8.1.1) - activemodel (= 8.1.1) - activesupport (= 8.1.1) + activemodel (8.1.2) + activesupport (= 8.1.2) + activerecord (8.1.2) + activemodel (= 8.1.2) + activesupport (= 8.1.2) timeout (>= 0.4.0) - activestorage (8.1.1) - actionpack (= 8.1.1) - activejob (= 8.1.1) - activerecord (= 8.1.1) - activesupport (= 8.1.1) + activestorage (8.1.2) + actionpack (= 8.1.2) + activejob (= 8.1.2) + activerecord (= 8.1.2) + activesupport (= 8.1.2) marcel (~> 1.0) - activesupport (8.1.1) + activesupport (8.1.2) base64 bigdecimal concurrent-ruby (~> 1.0, >= 1.3.1) @@ -83,8 +83,8 @@ GEM securerandom (>= 0.3) tzinfo (~> 2.0, >= 2.0.5) uri (>= 0.13.1) - addressable (2.8.7) - public_suffix (>= 2.0.2, < 7.0) + addressable (2.8.8) + public_suffix (>= 2.0.2, < 8.0) allocation_stats (0.1.5) ansi (1.5.0) appraisal (2.5.0) @@ -145,7 +145,14 @@ GEM temple (>= 0.8.2) thor tilt - herb (0.8.3) + herb (0.8.7-aarch64-linux-gnu) + herb (0.8.7-aarch64-linux-musl) + herb (0.8.7-arm-linux-gnu) + herb (0.8.7-arm-linux-musl) + herb (0.8.7-arm64-darwin) + herb (0.8.7-x86_64-darwin) + herb (0.8.7-x86_64-linux-gnu) + herb (0.8.7-x86_64-linux-musl) i18n (1.14.8) concurrent-ruby (~> 1.0) io-console (0.8.2) @@ -177,7 +184,7 @@ GEM mini_mime (1.1.5) minitest (6.0.1) prism (~> 1.5) - net-imap (0.5.12) + net-imap (0.6.2) date net-protocol net-pop (0.1.2) @@ -210,7 +217,7 @@ GEM pp (0.6.3) prettyprint prettyprint (0.2.0) - prism (1.6.0) + prism (1.7.0) propshaft (1.3.1) actionpack (>= 7.0.0) activesupport (>= 7.0.0) @@ -218,7 +225,7 @@ GEM psych (5.3.1) date stringio - public_suffix (6.0.2) + public_suffix (7.0.2) puma (7.1.0) nio4r (~> 2.0) racc (1.8.1) @@ -230,20 +237,20 @@ GEM rack (>= 1.3) rackup (2.3.1) rack (>= 3) - rails (8.1.1) - actioncable (= 8.1.1) - actionmailbox (= 8.1.1) - actionmailer (= 8.1.1) - actionpack (= 8.1.1) - actiontext (= 8.1.1) - actionview (= 8.1.1) - activejob (= 8.1.1) - activemodel (= 8.1.1) - activerecord (= 8.1.1) - activestorage (= 8.1.1) - activesupport (= 8.1.1) + rails (8.1.2) + actioncable (= 8.1.2) + actionmailbox (= 8.1.2) + actionmailer (= 8.1.2) + actionpack (= 8.1.2) + actiontext (= 8.1.2) + actionview (= 8.1.2) + activejob (= 8.1.2) + activemodel (= 8.1.2) + activerecord (= 8.1.2) + activestorage (= 8.1.2) + activesupport (= 8.1.2) bundler (>= 1.15.0) - railties (= 8.1.1) + railties (= 8.1.2) rails-dom-testing (2.3.0) activesupport (>= 5.0.0) minitest @@ -251,9 +258,9 @@ GEM rails-html-sanitizer (1.6.2) loofah (~> 2.21) 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.1) - actionpack (= 8.1.1) - activesupport (= 8.1.1) + railties (8.1.2) + actionpack (= 8.1.2) + activesupport (= 8.1.2) irb (~> 1.13) rackup (>= 1.0.0) rake (>= 12.2) @@ -271,7 +278,7 @@ GEM herb (>= 0.8.0, < 1.0.0) redis (5.4.1) redis-client (>= 0.22.0) - redis-client (0.26.1) + redis-client (0.26.3) connection_pool regexp_parser (2.11.3) reline (0.6.3) @@ -305,16 +312,16 @@ GEM rubocop-ast (>= 1.47.1, < 2.0) ruby-progressbar (~> 1.7) unicode-display_width (>= 2.4.0, < 4.0) - rubocop-ast (1.48.0) + rubocop-ast (1.49.0) parser (>= 3.3.7.2) - prism (~> 1.4) + prism (~> 1.7) rubocop-md (2.0.3) lint_roller (~> 1.1) rubocop (>= 1.72.1) - rubocop-performance (1.25.0) + rubocop-performance (1.26.1) lint_roller (~> 1.1) rubocop (>= 1.75.0, < 2.0) - rubocop-ast (>= 1.38.0, < 2.0) + rubocop-ast (>= 1.47.1, < 2.0) ruby-progressbar (1.13.0) rubyzip (3.2.2) securerandom (0.4.1) @@ -355,26 +362,26 @@ GEM standard-custom (1.0.2) lint_roller (~> 1.0) rubocop (~> 1.50) - standard-performance (1.8.0) + standard-performance (1.9.0) lint_roller (~> 1.1) - rubocop-performance (~> 1.25.0) + rubocop-performance (~> 1.26.0) stringio (3.2.0) tailwindcss-rails (4.4.0) railties (>= 7.0.0) tailwindcss-ruby (~> 4.0) - tailwindcss-ruby (4.1.16) - tailwindcss-ruby (4.1.16-aarch64-linux-gnu) - tailwindcss-ruby (4.1.16-aarch64-linux-musl) - tailwindcss-ruby (4.1.16-arm64-darwin) - tailwindcss-ruby (4.1.16-x86_64-darwin) - tailwindcss-ruby (4.1.16-x86_64-linux-gnu) - tailwindcss-ruby (4.1.16-x86_64-linux-musl) + tailwindcss-ruby (4.1.18) + tailwindcss-ruby (4.1.18-aarch64-linux-gnu) + tailwindcss-ruby (4.1.18-aarch64-linux-musl) + tailwindcss-ruby (4.1.18-arm64-darwin) + tailwindcss-ruby (4.1.18-x86_64-darwin) + tailwindcss-ruby (4.1.18-x86_64-linux-gnu) + tailwindcss-ruby (4.1.18-x86_64-linux-musl) temple (0.10.4) terminal-table (4.0.0) unicode-display_width (>= 1.1.1, < 4) - thor (1.4.0) - tilt (2.6.1) - timeout (0.4.4) + thor (1.5.0) + tilt (2.7.0) + timeout (0.6.0) tsort (0.2.0) turbo-rails (2.0.20) actionpack (>= 7.1.0) @@ -387,7 +394,7 @@ GEM uri (1.1.1) useragent (0.16.11) warning (1.5.0) - webrick (1.9.1) + webrick (1.9.2) websocket (1.2.11) websocket-driver (0.8.0) base64 @@ -426,9 +433,10 @@ DEPENDENCIES m (~> 1) method_source (~> 1) minitest (~> 6) + nokogiri (= 1.19.0) propshaft (~> 1) puma (>= 6) - rails (~> 8) + rails (~> 8.1) rails-dom-testing (~> 2.3.0) rake (~> 13) reactionview From bd9ec522a981f001a0a27384299744c7a979e6f7 Mon Sep 17 00:00:00 2001 From: Joel Hawksley Date: Fri, 9 Jan 2026 13:15:15 -0700 Subject: [PATCH 05/10] more config updates --- .github/workflows/ci.yml | 14 +++++++------- docs/CHANGELOG.md | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 55d6009bc..0da09c120 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -14,18 +14,18 @@ jobs: benchmark: runs-on: ubuntu-latest env: - BUNDLE_GEMFILE: gemfiles/rails_8.0.gemfile + BUNDLE_GEMFILE: gemfiles/rails_8.1.gemfile steps: - uses: actions/checkout@v4.1.1 - name: Setup Ruby uses: ruby/setup-ruby@v1 with: - ruby-version: 3.4 + ruby-version: 4.0 bundler-cache: true - name: Run benchmarks run: | - bundle exec appraisal rails-8.0 rake partial_benchmark - bundle exec appraisal rails-8.0 rake translatable_benchmark + bundle exec appraisal rails-8.1 rake partial_benchmark + bundle exec appraisal rails-8.1 rake translatable_benchmark test: name: test (Rails ${{ matrix.rails_version }}, Ruby ${{ matrix.ruby_version }}) runs-on: ubuntu-latest @@ -83,7 +83,7 @@ jobs: - name: Setup Ruby uses: ruby/setup-ruby@v1 with: - ruby-version: 3.4 + ruby-version: 4.0 bundler-cache: true working-directory: 'view_component' - uses: actions/setup-node@v4 @@ -99,7 +99,7 @@ jobs: bundle --quiet && bundle exec rake env: VIEW_COMPONENT_PATH: ../view_component - RAILS_VERSION: '8.0.2' + RAILS_VERSION: '8.1.0' PARALLEL_WORKERS: '1' coverage: needs: test @@ -109,7 +109,7 @@ jobs: - name: Setup Ruby uses: ruby/setup-ruby@v1 with: - ruby-version: 3.4 + ruby-version: 4.0 bundler-cache: true - name: Download coverage results uses: actions/download-artifact@v4.3.0 diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index 33efda2f8..044609c0a 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -10,7 +10,7 @@ nav_order: 6 ## main -* Test against Ruby 4.0.0 in CI. +* Use Ruby 4.0.0 in CI and dev. *Joel Hawksley* From 667cfaec28b04382dc2633beddca226806f428cf Mon Sep 17 00:00:00 2001 From: Joel Hawksley Date: Fri, 9 Jan 2026 13:15:41 -0700 Subject: [PATCH 06/10] use ruby 4 for lint --- .github/workflows/lint.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index d86bb2bf8..30754e479 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -73,7 +73,7 @@ jobs: - name: Setup Ruby uses: ruby/setup-ruby@v1 with: - ruby-version: 3.4 + ruby-version: 4.0 - uses: actions/cache@v4 with: path: vendor/bundle From ce217de42c31f67d4d719b9b30050ba00f525228 Mon Sep 17 00:00:00 2001 From: Joel Hawksley Date: Fri, 9 Jan 2026 14:44:31 -0700 Subject: [PATCH 07/10] update rails_main lock --- gemfiles/rails_main.gemfile.lock | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/gemfiles/rails_main.gemfile.lock b/gemfiles/rails_main.gemfile.lock index 1534117be..aa6b1fd2b 100644 --- a/gemfiles/rails_main.gemfile.lock +++ b/gemfiles/rails_main.gemfile.lock @@ -109,7 +109,7 @@ GIT PATH remote: .. specs: - view_component (4.1.1) + view_component (4.2.0) actionview (>= 7.1.0) activesupport (>= 7.1.0) concurrent-ruby (~> 1) @@ -399,7 +399,7 @@ GEM concurrent-ruby (~> 1.0) unicode-display_width (3.2.0) unicode-emoji (~> 4.1) - unicode-emoji (4.1.0) + unicode-emoji (4.2.0) uri (1.1.1) useragent (0.16.11) warning (1.5.0) @@ -466,7 +466,7 @@ DEPENDENCIES yard-activesupport-concern (< 1) RUBY VERSION - ruby 4.0.0.dev + ruby 4.1.0.dev BUNDLED WITH - 4.0.0.dev + 4.1.0.dev From e84950c96c8eef5c8c8f298d6cf8ebab920eb979 Mon Sep 17 00:00:00 2001 From: Joel Hawksley Date: Fri, 9 Jan 2026 14:46:36 -0700 Subject: [PATCH 08/10] make rails 8.1 build happy --- gemfiles/rails_8.1.gemfile.lock | 236 ++++++++++++++++---------------- 1 file changed, 115 insertions(+), 121 deletions(-) diff --git a/gemfiles/rails_8.1.gemfile.lock b/gemfiles/rails_8.1.gemfile.lock index 30f0cd4c5..2dfdf1277 100644 --- a/gemfiles/rails_8.1.gemfile.lock +++ b/gemfiles/rails_8.1.gemfile.lock @@ -9,31 +9,31 @@ PATH GEM remote: https://rubygems.org/ specs: - action_text-trix (2.1.15) + action_text-trix (2.1.16) railties - actioncable (8.1.1) - actionpack (= 8.1.1) - activesupport (= 8.1.1) + actioncable (8.1.2) + actionpack (= 8.1.2) + activesupport (= 8.1.2) nio4r (~> 2.0) websocket-driver (>= 0.6.1) zeitwerk (~> 2.6) - actionmailbox (8.1.1) - actionpack (= 8.1.1) - activejob (= 8.1.1) - activerecord (= 8.1.1) - activestorage (= 8.1.1) - activesupport (= 8.1.1) + actionmailbox (8.1.2) + actionpack (= 8.1.2) + activejob (= 8.1.2) + activerecord (= 8.1.2) + activestorage (= 8.1.2) + activesupport (= 8.1.2) mail (>= 2.8.0) - actionmailer (8.1.1) - actionpack (= 8.1.1) - actionview (= 8.1.1) - activejob (= 8.1.1) - activesupport (= 8.1.1) + actionmailer (8.1.2) + actionpack (= 8.1.2) + actionview (= 8.1.2) + activejob (= 8.1.2) + activesupport (= 8.1.2) mail (>= 2.8.0) rails-dom-testing (~> 2.2) - actionpack (8.1.1) - actionview (= 8.1.1) - activesupport (= 8.1.1) + actionpack (8.1.2) + actionview (= 8.1.2) + activesupport (= 8.1.2) nokogiri (>= 1.8.5) rack (>= 2.2.4) rack-session (>= 1.0.1) @@ -41,36 +41,36 @@ GEM rails-dom-testing (~> 2.2) rails-html-sanitizer (~> 1.6) useragent (~> 0.16) - actiontext (8.1.1) + actiontext (8.1.2) action_text-trix (~> 2.1.15) - actionpack (= 8.1.1) - activerecord (= 8.1.1) - activestorage (= 8.1.1) - activesupport (= 8.1.1) + actionpack (= 8.1.2) + activerecord (= 8.1.2) + activestorage (= 8.1.2) + activesupport (= 8.1.2) globalid (>= 0.6.0) nokogiri (>= 1.8.5) - actionview (8.1.1) - activesupport (= 8.1.1) + actionview (8.1.2) + activesupport (= 8.1.2) builder (~> 3.1) erubi (~> 1.11) rails-dom-testing (~> 2.2) rails-html-sanitizer (~> 1.6) - activejob (8.1.1) - activesupport (= 8.1.1) + activejob (8.1.2) + activesupport (= 8.1.2) globalid (>= 0.3.6) - activemodel (8.1.1) - activesupport (= 8.1.1) - activerecord (8.1.1) - activemodel (= 8.1.1) - activesupport (= 8.1.1) + activemodel (8.1.2) + activesupport (= 8.1.2) + activerecord (8.1.2) + activemodel (= 8.1.2) + activesupport (= 8.1.2) timeout (>= 0.4.0) - activestorage (8.1.1) - actionpack (= 8.1.1) - activejob (= 8.1.1) - activerecord (= 8.1.1) - activesupport (= 8.1.1) + activestorage (8.1.2) + actionpack (= 8.1.2) + activejob (= 8.1.2) + activerecord (= 8.1.2) + activesupport (= 8.1.2) marcel (~> 1.0) - activesupport (8.1.1) + activesupport (8.1.2) base64 bigdecimal concurrent-ruby (~> 1.0, >= 1.3.1) @@ -83,8 +83,8 @@ GEM securerandom (>= 0.3) tzinfo (~> 2.0, >= 2.0.5) uri (>= 0.13.1) - addressable (2.8.7) - public_suffix (>= 2.0.2, < 7.0) + addressable (2.8.8) + public_suffix (>= 2.0.2, < 8.0) allocation_stats (0.1.5) ansi (1.5.0) appraisal (2.5.0) @@ -102,7 +102,7 @@ GEM erubi (~> 1.4) parser (>= 2.4) smart_properties - bigdecimal (3.3.1) + bigdecimal (4.0.1) builder (3.3.0) capybara (3.40.0) addressable @@ -113,18 +113,18 @@ GEM rack-test (>= 0.6.3) regexp_parser (>= 1.5, < 3.0) xpath (~> 3.2) - concurrent-ruby (1.3.5) - connection_pool (2.5.4) + concurrent-ruby (1.3.6) + connection_pool (3.0.2) crass (1.0.6) cuprite (0.17) capybara (~> 3.0) ferrum (~> 0.17.0) - date (3.5.0) + date (3.5.1) diff-lcs (1.6.2) docile (1.4.1) drb (2.2.3) dry-initializer (3.2.0) - erb (6.0.0) + erb (6.0.1) erb_lint (0.9.0) activesupport better_html (>= 2.0.1) @@ -145,35 +145,33 @@ GEM temple (>= 0.8.2) thor tilt - herb (0.8.2) - herb (0.8.2-aarch64-linux-gnu) - herb (0.8.2-aarch64-linux-musl) - herb (0.8.2-arm-linux-gnu) - herb (0.8.2-arm-linux-musl) - herb (0.8.2-arm64-darwin) - herb (0.8.2-x86_64-darwin) - herb (0.8.2-x86_64-linux-gnu) - herb (0.8.2-x86_64-linux-musl) - i18n (1.14.7) + herb (0.8.7-aarch64-linux-gnu) + herb (0.8.7-aarch64-linux-musl) + herb (0.8.7-arm-linux-gnu) + herb (0.8.7-arm-linux-musl) + herb (0.8.7-arm64-darwin) + herb (0.8.7-x86_64-darwin) + herb (0.8.7-x86_64-linux-gnu) + herb (0.8.7-x86_64-linux-musl) + i18n (1.14.8) concurrent-ruby (~> 1.0) - io-console (0.8.1) - irb (1.15.3) + io-console (0.8.2) + irb (1.16.0) pp (>= 0.6.0) rdoc (>= 4.0.0) reline (>= 0.4.2) jbuilder (2.14.1) actionview (>= 7.0.0) activesupport (>= 7.0.0) - json (2.16.0) + json (2.18.0) language_server-protocol (3.17.0.5) lint_roller (1.1.0) logger (1.7.0) - loofah (2.24.1) + loofah (2.25.0) crass (~> 1.0.2) nokogiri (>= 1.12.0) - m (1.6.2) - method_source (>= 0.6.7) - rake (>= 0.9.2.2) + m (1.7.0) + rake mail (2.9.0) logger mini_mime (>= 0.1.1) @@ -184,9 +182,8 @@ GEM matrix (0.4.3) method_source (1.1.0) mini_mime (1.1.5) - mini_portile2 (2.8.9) - minitest (5.26.2) - net-imap (0.5.12) + minitest (5.27.0) + net-imap (0.6.2) date net-protocol net-pop (0.1.2) @@ -196,24 +193,21 @@ GEM net-smtp (0.5.1) net-protocol nio4r (2.7.5) - nokogiri (1.18.10) - mini_portile2 (~> 2.8.2) - racc (~> 1.4) - nokogiri (1.18.10-aarch64-linux-gnu) + nokogiri (1.19.0-aarch64-linux-gnu) racc (~> 1.4) - nokogiri (1.18.10-aarch64-linux-musl) + nokogiri (1.19.0-aarch64-linux-musl) racc (~> 1.4) - nokogiri (1.18.10-arm-linux-gnu) + nokogiri (1.19.0-arm-linux-gnu) racc (~> 1.4) - nokogiri (1.18.10-arm-linux-musl) + nokogiri (1.19.0-arm-linux-musl) racc (~> 1.4) - nokogiri (1.18.10-arm64-darwin) + nokogiri (1.19.0-arm64-darwin) racc (~> 1.4) - nokogiri (1.18.10-x86_64-darwin) + nokogiri (1.19.0-x86_64-darwin) racc (~> 1.4) - nokogiri (1.18.10-x86_64-linux-gnu) + nokogiri (1.19.0-x86_64-linux-gnu) racc (~> 1.4) - nokogiri (1.18.10-x86_64-linux-musl) + nokogiri (1.19.0-x86_64-linux-musl) racc (~> 1.4) parallel (1.27.0) parser (3.3.10.0) @@ -222,15 +216,15 @@ GEM pp (0.6.3) prettyprint prettyprint (0.2.0) - prism (1.6.0) + prism (1.7.0) propshaft (1.3.1) actionpack (>= 7.0.0) activesupport (>= 7.0.0) rack - psych (5.2.6) + psych (5.3.1) date stringio - public_suffix (6.0.2) + public_suffix (7.0.2) puma (7.1.0) nio4r (~> 2.0) racc (1.8.1) @@ -240,22 +234,22 @@ GEM rack (>= 3.0.0) rack-test (2.2.0) rack (>= 1.3) - rackup (2.2.1) + rackup (2.3.1) rack (>= 3) - rails (8.1.1) - actioncable (= 8.1.1) - actionmailbox (= 8.1.1) - actionmailer (= 8.1.1) - actionpack (= 8.1.1) - actiontext (= 8.1.1) - actionview (= 8.1.1) - activejob (= 8.1.1) - activemodel (= 8.1.1) - activerecord (= 8.1.1) - activestorage (= 8.1.1) - activesupport (= 8.1.1) + rails (8.1.2) + actioncable (= 8.1.2) + actionmailbox (= 8.1.2) + actionmailer (= 8.1.2) + actionpack (= 8.1.2) + actiontext (= 8.1.2) + actionview (= 8.1.2) + activejob (= 8.1.2) + activemodel (= 8.1.2) + activerecord (= 8.1.2) + activestorage (= 8.1.2) + activesupport (= 8.1.2) bundler (>= 1.15.0) - railties (= 8.1.1) + railties (= 8.1.2) rails-dom-testing (2.3.0) activesupport (>= 5.0.0) minitest @@ -263,9 +257,9 @@ GEM rails-html-sanitizer (1.6.2) loofah (~> 2.21) 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.1) - actionpack (= 8.1.1) - activesupport (= 8.1.1) + railties (8.1.2) + actionpack (= 8.1.2) + activesupport (= 8.1.2) irb (~> 1.13) rackup (>= 1.0.0) rake (>= 12.2) @@ -274,16 +268,16 @@ GEM zeitwerk (~> 2.6) rainbow (3.1.1) rake (13.3.1) - rdoc (6.15.1) + rdoc (7.0.3) erb psych (>= 4.0.0) tsort - reactionview (0.1.6) + reactionview (0.2.0) actionview (>= 7.0) - herb (>= 0.7.5, < 1.0.0) + herb (>= 0.8.0, < 1.0.0) redis (5.4.1) redis-client (>= 0.22.0) - redis-client (0.26.1) + redis-client (0.26.3) connection_pool regexp_parser (2.11.3) reline (0.6.3) @@ -317,20 +311,20 @@ GEM rubocop-ast (>= 1.47.1, < 2.0) ruby-progressbar (~> 1.7) unicode-display_width (>= 2.4.0, < 4.0) - rubocop-ast (1.48.0) + rubocop-ast (1.49.0) parser (>= 3.3.7.2) - prism (~> 1.4) + prism (~> 1.7) rubocop-md (2.0.3) lint_roller (~> 1.1) rubocop (>= 1.72.1) - rubocop-performance (1.25.0) + rubocop-performance (1.26.1) lint_roller (~> 1.1) rubocop (>= 1.75.0, < 2.0) - rubocop-ast (>= 1.38.0, < 2.0) + rubocop-ast (>= 1.47.1, < 2.0) ruby-progressbar (1.13.0) rubyzip (3.2.2) securerandom (0.4.1) - selenium-webdriver (4.38.0) + selenium-webdriver (4.39.0) base64 (~> 0.2) logger (~> 1.4) rexml (~> 3.2, >= 3.2.5) @@ -367,26 +361,26 @@ GEM standard-custom (1.0.2) lint_roller (~> 1.0) rubocop (~> 1.50) - standard-performance (1.8.0) + standard-performance (1.9.0) lint_roller (~> 1.1) - rubocop-performance (~> 1.25.0) - stringio (3.1.8) + rubocop-performance (~> 1.26.0) + stringio (3.2.0) tailwindcss-rails (4.4.0) railties (>= 7.0.0) tailwindcss-ruby (~> 4.0) - tailwindcss-ruby (4.1.16) - tailwindcss-ruby (4.1.16-aarch64-linux-gnu) - tailwindcss-ruby (4.1.16-aarch64-linux-musl) - tailwindcss-ruby (4.1.16-arm64-darwin) - tailwindcss-ruby (4.1.16-x86_64-darwin) - tailwindcss-ruby (4.1.16-x86_64-linux-gnu) - tailwindcss-ruby (4.1.16-x86_64-linux-musl) + tailwindcss-ruby (4.1.18) + tailwindcss-ruby (4.1.18-aarch64-linux-gnu) + tailwindcss-ruby (4.1.18-aarch64-linux-musl) + tailwindcss-ruby (4.1.18-arm64-darwin) + tailwindcss-ruby (4.1.18-x86_64-darwin) + tailwindcss-ruby (4.1.18-x86_64-linux-gnu) + tailwindcss-ruby (4.1.18-x86_64-linux-musl) temple (0.10.4) terminal-table (4.0.0) unicode-display_width (>= 1.1.1, < 4) - thor (1.4.0) - tilt (2.6.1) - timeout (0.4.4) + thor (1.5.0) + tilt (2.7.0) + timeout (0.6.0) tsort (0.2.0) turbo-rails (2.0.20) actionpack (>= 7.1.0) @@ -399,7 +393,7 @@ GEM uri (1.1.1) useragent (0.16.11) warning (1.5.0) - webrick (1.9.1) + webrick (1.9.2) websocket (1.2.11) websocket-driver (0.8.0) base64 @@ -407,10 +401,10 @@ GEM websocket-extensions (0.1.5) xpath (3.2.0) nokogiri (~> 1.8) - yard (0.9.37) + yard (0.9.38) yard-activesupport-concern (0.0.1) yard (>= 0.8) - zeitwerk (2.7.3) + zeitwerk (2.7.4) PLATFORMS aarch64-linux-gnu From f40ceefda0ecde82aaec683de4f6fd6b3170e83a Mon Sep 17 00:00:00 2001 From: Joel Hawksley Date: Fri, 9 Jan 2026 15:00:46 -0700 Subject: [PATCH 09/10] fix test allocations --- test/sandbox/test/rendering_test.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/sandbox/test/rendering_test.rb b/test/sandbox/test/rendering_test.rb index 2a0a094fb..219f99cfd 100644 --- a/test/sandbox/test/rendering_test.rb +++ b/test/sandbox/test/rendering_test.rb @@ -20,7 +20,7 @@ def test_render_inline_allocations MyComponent.__vc_ensure_compiled with_instrumentation_enabled_option(false) do - assert_allocations({"3.5" => 67, "3.4" => 72..74, "3.3" => 75, "3.2" => 78..79}) do + assert_allocations({"4.0" => 67, "3.4" => 72..74, "3.3" => 75, "3.2" => 78..79}) do render_inline(MyComponent.new) end end @@ -34,7 +34,7 @@ def test_render_collection_inline_allocations ViewComponent::CompileCache.cache.delete(ProductComponent) ProductComponent.__vc_ensure_compiled - allocations = {"3.5" => 66, "3.4" => 70..82, "3.3" => 89, "3.2" => 92..93} + allocations = {"4.0" => 66, "3.4" => 70..82, "3.3" => 89, "3.2" => 92..93} products = [Product.new(name: "Radio clock"), Product.new(name: "Mints")] notice = "On sale" From 8afdd98f9de6d7bd4506789c3b7ff73129795d2c Mon Sep 17 00:00:00 2001 From: Joel Hawksley Date: Fri, 9 Jan 2026 15:04:05 -0700 Subject: [PATCH 10/10] add allocations for 4.1 --- test/sandbox/test/rendering_test.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/sandbox/test/rendering_test.rb b/test/sandbox/test/rendering_test.rb index 219f99cfd..d8ec2a436 100644 --- a/test/sandbox/test/rendering_test.rb +++ b/test/sandbox/test/rendering_test.rb @@ -20,7 +20,7 @@ def test_render_inline_allocations MyComponent.__vc_ensure_compiled with_instrumentation_enabled_option(false) do - assert_allocations({"4.0" => 67, "3.4" => 72..74, "3.3" => 75, "3.2" => 78..79}) do + assert_allocations({"4.1" => 67, "4.0" => 67, "3.4" => 72..74, "3.3" => 75, "3.2" => 78..79}) do render_inline(MyComponent.new) end end @@ -34,7 +34,7 @@ def test_render_collection_inline_allocations ViewComponent::CompileCache.cache.delete(ProductComponent) ProductComponent.__vc_ensure_compiled - allocations = {"4.0" => 66, "3.4" => 70..82, "3.3" => 89, "3.2" => 92..93} + allocations = {"4.1" => 66, "4.0" => 66, "3.4" => 70..82, "3.3" => 89, "3.2" => 92..93} products = [Product.new(name: "Radio clock"), Product.new(name: "Mints")] notice = "On sale"