Test against Ruby 3.3, 3.4 and 4.0; drop EOL Rubies from CI#42
Merged
Conversation
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>
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.
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_versionand rubocop'sTargetRubyVersionmove 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
benchmarkgem, which Ruby 4.0 removed from default gems).rubocop.ymlmigrated fromrequire:toplugins:— the supported form for rubocop 1.72+x86_64-linuxandarm64-darwinadded to lockfile platforms so CI and local installs use precompiled nokogiri instead of building from sourceNice side effect: the rubocop update drops the transitive
rexmldependency 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.3means 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