Skip to content

Test against Ruby 3.3, 3.4 and 4.0; drop EOL Rubies from CI#42

Merged
mscrivo merged 2 commits into
masterfrom
ci-ruby-matrix
Jul 8, 2026
Merged

Test against Ruby 3.3, 3.4 and 4.0; drop EOL Rubies from CI#42
mscrivo merged 2 commits into
masterfrom
ci-ruby-matrix

Conversation

@mscrivo

@mscrivo mscrivo commented Jul 8, 2026

Copy link
Copy Markdown
Collaborator

Summary

Ruby 3.0–3.2 are all end-of-life (3.2 reached EOL in March 2026), so this drops them from the CI matrix and tests against 3.3, 3.4 and 4.0 instead. required_ruby_version and rubocop's TargetRubyVersion move to 3.3 to match, following the precedent set in 0.4.0 when Ruby < 3.0 support was dropped.

Supporting changes needed for the new Rubies

  • rubocop 1.64 → 1.88 in the lockfile: 1.64 cannot even load on Ruby 4.0 (its executable requires the benchmark gem, which Ruby 4.0 removed from default gems)
  • .rubocop.yml migrated from require: to plugins: — the supported form for rubocop 1.72+
  • nokogiri 1.16 → 1.19 in the lockfile: 1.16 has no support for Ruby 3.4+
  • x86_64-linux and arm64-darwin added to lockfile platforms so CI and local installs use precompiled nokogiri instead of building from source

Nice side effect: the rubocop update drops the transitive rexml dependency entirely — the last three dependabot PRs (#37, #38, #39) were all rexml security bumps, and that churn ends here.

Verification

Local run on Ruby 4.0.5: 54 examples, 0 failures; rubocop 8 files inspected, no offenses. The CI matrix on this PR exercises 3.3/3.4/4.0 directly.

Note for reviewers: required_ruby_version >= 3.3 means the next gem release won't install on Ruby < 3.3, so this warrants at least a minor version bump per semver.

🤖 Generated with Claude Code

mscrivo and others added 2 commits July 8, 2026 14:28
Ruby 3.0-3.2 are all end-of-life (3.2 reached EOL in March 2026), so
drop them from the CI matrix and test against 3.3, 3.4 and 4.0 instead.
required_ruby_version and rubocop's TargetRubyVersion move to 3.3 to
match, following the precedent set in 0.4.0 when Ruby < 3.0 support was
dropped.

Supporting changes needed for the new Rubies:

- update rubocop 1.64 -> 1.88 in the lockfile: 1.64 cannot load on
  Ruby 4.0 (it requires the benchmark gem, removed from default gems)
- migrate .rubocop.yml from require: to plugins: for rubocop 1.72+
- update nokogiri 1.16 -> 1.19 in the lockfile: 1.16 has no support
  for Ruby 3.4+
- add x86_64-linux and arm64-darwin to lockfile platforms so CI and
  local installs use precompiled nokogiri instead of building from
  source

The rubocop update also drops the transitive rexml dependency entirely
(the last three dependabot PRs were all rexml security bumps).

Tests and rubocop verified green locally on Ruby 4.0.5: 54 examples,
0 failures, no offenses.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
rake 12.3.3 requires ostruct, which Ruby 4.0 removed from the default
gems, so `bundle exec rake` could not load at all on Ruby 4.0 in CI.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@mscrivo mscrivo merged commit 8b11493 into master Jul 8, 2026
6 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