ci: refresh matrix for 2026 Ruby/Rails, fix TruffleRuby build#400
Merged
Conversation
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.
29e19e8 to
5efead4
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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.
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.