From 862da486b824635c75dbb65245bd951e4cf58bba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafael=20Mendon=C3=A7a=20Fran=C3=A7a?= Date: Wed, 7 Jan 2026 20:43:21 +0000 Subject: [PATCH 1/4] Test with Rails 8.1 and Ruby 4.0 --- .devcontainer/devcontainer.json | 2 +- .github/workflows/ci.yml | 9 ++++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 905d5379..7449c31e 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -3,7 +3,7 @@ { "name": "spring", // Or use a Dockerfile or Docker Compose file. More info: https://containers.dev/guide/dockerfile - "image": "ghcr.io/rails/devcontainer/images/ruby:3.4.4", + "image": "ghcr.io/rails/devcontainer/images/ruby:4.0.0", "features": { "ghcr.io/devcontainers/features/github-cli:1": {} } diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 210a42bf..bbc5490f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -6,8 +6,8 @@ jobs: strategy: fail-fast: false matrix: - ruby: [ '3.1', '3.2', '3.3', '3.4', 'head' ] - rails: [ '7.1', '7.2', '8.0', 'edge' ] + ruby: [ '3.1', '3.2', '3.3', '3.4', '4.0', 'head' ] + rails: [ '7.1', '7.2', '8.0', '8.1', 'edge' ] rubyopt: [""] include: - ruby: '3.3' @@ -16,9 +16,12 @@ jobs: exclude: - ruby: '3.1' rails: 'edge' - rubyopt: '' - ruby: '3.1' rails: '8.0' + - ruby: '3.1' + rails: '8.1' + - ruby: '3.2' + rails: 'edge' env: RAILS_VERSION: ${{ matrix.rails }} From a1587f4bc6127f05543a9ab5c49ece30bda86978 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafael=20Mendon=C3=A7a=20Fran=C3=A7a?= Date: Wed, 7 Jan 2026 21:58:24 +0000 Subject: [PATCH 2/4] Lock minitest to < 6 We still need to support Rails 7.1. --- Gemfile | 2 ++ test/support/application_generator.rb | 1 + 2 files changed, 3 insertions(+) diff --git a/Gemfile b/Gemfile index 59339f17..43bc15d7 100644 --- a/Gemfile +++ b/Gemfile @@ -13,3 +13,5 @@ elsif ENV["RAILS_VERSION"] else gem "activesupport" end + +gem "minitest", "< 6" diff --git a/test/support/application_generator.rb b/test/support/application_generator.rb index 84a3403a..ffa15c38 100644 --- a/test/support/application_generator.rb +++ b/test/support/application_generator.rb @@ -53,6 +53,7 @@ def generate_files FileUtils.rm_rf(application.path("test/performance")) append_to_file(application.gemfile, "gem 'spring', '#{Spring::VERSION}'") + append_to_file(application.gemfile, "gem 'minitest', '< 6'") append_to_file(application.path("config/boot.rb"), "raise 'BOOM' if ENV['CRASH_ON_BOOT']") From 51fdb7e6896cde5cbd48575a8ab66fe252542f86 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafael=20Mendon=C3=A7a=20Fran=C3=A7a?= Date: Wed, 7 Jan 2026 22:27:27 +0000 Subject: [PATCH 3/4] Fix issue with bundler 4 --- test/support/acceptance_test.rb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/test/support/acceptance_test.rb b/test/support/acceptance_test.rb index 34876755..d4d7f6ed 100644 --- a/test/support/acceptance_test.rb +++ b/test/support/acceptance_test.rb @@ -65,6 +65,7 @@ def refute_output_includes(command, not_expected) def assert_speedup(ratio = DEFAULT_SPEEDUP) if ENV['CI'] yield + assert true else app.with_timing do yield @@ -673,7 +674,8 @@ def exec_name FileUtils.cp_r "#{app.gem_home}/", bundle_path.to_s - app.run! "bundle install --path .bundle --local" + app.run! "bundle config set path '.bundle'" + app.run! "bundle install --local" assert_speedup do 2.times { assert_success "bundle exec rails runner ''" } From 83e9823717d91aa573c362ffa3886c6b541207b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafael=20Mendon=C3=A7a=20Fran=C3=A7a?= Date: Wed, 7 Jan 2026 22:46:02 +0000 Subject: [PATCH 4/4] Add summary job to CI workflow --- .github/workflows/ci.yml | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index bbc5490f..c00289e7 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -44,3 +44,15 @@ jobs: run: bundle exec rake test:acceptance RUBYOPT="${{ matrix.rubyopt }}" timeout-minutes: 10 if: ${{ matrix.rails != 'edge' && matrix.ruby != 'head' }} # Acceptance tests use `gem install rails && rails new` + + summary: + runs-on: ubuntu-latest + needs: tests + if: always() + steps: + - name: Check test matrix results + run: | + if [ "${{ needs.tests.result }}" != "success" ]; then + echo "Tests failed or were cancelled" + exit 1 + fi