Skip to content

ci: refresh matrix for 2026 Ruby/Rails, fix TruffleRuby build#400

Merged
johnnagro merged 4 commits into
masterfrom
chore/ci-refresh-2026
Jul 7, 2026
Merged

ci: refresh matrix for 2026 Ruby/Rails, fix TruffleRuby build#400
johnnagro merged 4 commits into
masterfrom
chore/ci-refresh-2026

Conversation

@johnnagro

Copy link
Copy Markdown
Collaborator

The pinned truffleruby-23.0 could no longer build modern native gems (json 2.20.0, pulled in transitively via rubocop), which hard-failed and, without fail-fast: false, cancelled the rest of the matrix. This refreshes the toolchain and expands coverage to the current ecosystem.

  • Bump TruffleRuby 23.0 -> 34.0.1 (Ruby 3.4 compat) to fix the native build
  • Add fail-fast: false so one leg's failure can't cancel healthy jobs
  • Add Rails 8.1 (gemfiles/rails_8.1.gemfile) to the matrix
  • Add Ruby 4.0, scoped to currently-supported Rails (8.1, 8.0, edge)
  • Add JRuby 10.0 (LTS); drop EOL JRuby 9.3
  • Bump edge marker to Rails 8.2; prune dead jruby-9.2/truffleruby excludes
  • Update README supported-version list

Verified locally: Rails 8.1 on Ruby 3.4 passes (133 examples, 0 failures), RuboCop clean. Ruby 4.0 combos still need real-CI confirmation. The remaining allowed failures are Ruby head and rails_edge (8.2 removed ActionController::LogSubscriber#attach_to), both continue-on-error.

johnnagro added 4 commits July 7, 2026 11:15
The pinned truffleruby-23.0 could no longer build modern native gems
(json 2.20.0, pulled in transitively via rubocop), which hard-failed and,
without fail-fast: false, cancelled the rest of the matrix. This refreshes
the toolchain and expands coverage to the current ecosystem.

* Bump TruffleRuby 23.0 -> 34.0.1 (Ruby 3.4 compat) to fix the native build
* Add fail-fast: false so one leg's failure can't cancel healthy jobs
* Add Rails 8.1 (gemfiles/rails_8.1.gemfile) to the matrix
* Add Ruby 4.0, scoped to currently-supported Rails (8.1, 8.0, edge)
* Add JRuby 10.0 (LTS); drop EOL JRuby 9.3
* Bump edge marker to Rails 8.2; prune dead jruby-9.2/truffleruby excludes
* Update README supported-version list

Verified locally: Rails 8.1 on Ruby 3.4 passes (133 examples, 0 failures),
RuboCop clean. Ruby 4.0 combos still need real-CI confirmation. The
remaining allowed failures are Ruby head and rails_edge (8.2 removed
ActionController::LogSubscriber#attach_to), both continue-on-error.
JRuby 10 targets Ruby 3.4 but can't build C extensions, which broke the
new matrix leg two ways:

* Old Rails raised `LoadError: cannot load such file -- bigdecimal`
  (extracted from Ruby's default gems in 3.4; JRuby doesn't bundle it).
* Modern Rails failed to install rbs (a C extension) pulled in via
  railties -> irb -> rdoc 8.

Declare bigdecimal explicitly and keep rdoc on the pre-rbs line. Both are
dev-only and no-ops on MRI/TruffleRuby (verified: rbs is no longer
resolved, suite stays green).
Bump version and add a CHANGELOG entry covering the new Rails (7.2, 8.0,
8.1) and Ruby (3.4, 4.0), JRuby 10.0, and TruffleRuby 34 support, the
explicit `require 'logger'` fix for Ruby 3.4+, and the switch to
`add_dependency` in the gemspec.
List only versions verified green in CI as officially supported, and note
that Rails edge and Ruby head are exercised on a best-effort basis and are
not yet officially supported. Avoids implying edge/head support in the
0.15.0 release.
@johnnagro johnnagro force-pushed the chore/ci-refresh-2026 branch from 29e19e8 to 5efead4 Compare July 7, 2026 15:59
@johnnagro johnnagro merged commit e5caed7 into master Jul 7, 2026
78 of 94 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant