Skip to content

Test against maintained Ruby versions (3.3, 3.4, 4.0)#56

Open
matt-evervault wants to merge 3 commits into
masterfrom
update-ruby-version-matrix
Open

Test against maintained Ruby versions (3.3, 3.4, 4.0)#56
matt-evervault wants to merge 3 commits into
masterfrom
update-ruby-version-matrix

Conversation

@matt-evervault

@matt-evervault matt-evervault commented Jun 16, 2026

Copy link
Copy Markdown
Contributor

What

Updates the CI test matrix and gemspec to target currently-maintained Ruby versions.

  • Test matrix (run-tests.yml, e2e.yml): 3.0, 3.1, 3.23.3, 3.4, 4.0
  • required_ruby_version: >= 3.0.0>= 3.3.0
  • rake: ~> 12.0~> 13.0

Why

The previous matrix tested only EOL Ruby versions:

  • 3.0 — EOL April 2024
  • 3.1 — EOL March 2025
  • 3.2 — EOL March 2026

It also had a latent bug: the unquoted 3.0 is parsed by YAML as the float 3.0, which collapses to "3", so setup-ruby installed the latest 3.x instead of 3.0 — the job never actually tested the declared minimum. Versions are now quoted so they mean what they say.

Per maintainer guidance, dropping EOL versions is acceptable — consumers should not be on these. required_ruby_version is raised to match the tested floor.

rake bump

Testing Ruby 4.0 (and any 3.5+) required moving off the old rake ~> 12.0 pin: rake 12.3.3 requires ostruct, which is no longer a default gem in Ruby 3.5+, so bundle exec rake failed to load with cannot load such file -- ostruct. rake 13.x dropped that dependency. Verified locally on Ruby 4.0.5: 66 examples, 0 failures.

Why not 3.5? setup-ruby currently resolves 3.5 to 3.5.0-preview1 — there's no stable release on that line; 4.0 is the stable release after 3.4.

Note

Follow-up to #54, which fixed the immediate CI failures (missing base64 dependency on Ruby 3.4+ and RuboCop offenses).

🤖 Generated with Claude Code

The previous matrix tested 3.0, 3.1, 3.2 — all now EOL (3.0 in
Apr 2024, 3.1 in Mar 2025, 3.2 in Mar 2026). It also had a latent
bug: the unquoted `3.0` was parsed by YAML as the float 3.0 and
collapsed to "3", so that job actually ran the latest 3.x rather
than 3.0.

Quote the versions and target the currently-maintained releases.
Raise required_ruby_version to >= 3.3.0 to match.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@changeset-bot

changeset-bot Bot commented Jun 16, 2026

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: a662073

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

The previous matrix tested 3.0, 3.1, 3.2 — all now EOL (3.0 in
Apr 2024, 3.1 in Mar 2025, 3.2 in Mar 2026). It also had a latent
bug: the unquoted `3.0` was parsed by YAML as the float 3.0 and
collapsed to "3", so that job actually ran the latest 3.x rather
than 3.0.

Quote the versions and target the currently-maintained stable
releases (3.3, 3.4). Raise required_ruby_version to >= 3.3.0 to
match. 3.5 is still only available as a preview, so it is left out
until it has a stable release.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@matt-evervault matt-evervault changed the title Test against maintained Ruby versions (3.3, 3.4, 3.5) Test against maintained Ruby versions (3.3, 3.4) Jun 16, 2026
Ruby 4.0 is the current stable release line. Testing it requires
bumping rake off the old ~> 12.0 pin: rake 12.3.3 requires ostruct,
which is no longer a default gem in Ruby 3.5+, so `bundle exec rake`
failed to load. rake 13.x dropped that dependency.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@matt-evervault matt-evervault changed the title Test against maintained Ruby versions (3.3, 3.4) Test against maintained Ruby versions (3.3, 3.4, 4.0) Jun 16, 2026
@matt-evervault matt-evervault self-assigned this Jun 16, 2026
@matt-evervault matt-evervault requested a review from lfarrel6 June 16, 2026 09:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

1 participant