Skip to content

Declare and test the supported Ruby versions - #10

Merged
IgorFroehner merged 1 commit into
masterfrom
chore/ruby-support
Aug 13, 2026
Merged

Declare and test the supported Ruby versions#10
IgorFroehner merged 1 commit into
masterfrom
chore/ruby-support

Conversation

@IgorFroehner

@IgorFroehner IgorFroehner commented Aug 13, 2026

Copy link
Copy Markdown
Collaborator

Closes the last item from the maintenance sweep: the gem never said which
Rubies it supports, and nothing tested the answer.

Why

recorder.gemspec had no required_ruby_version at all, so the gem installed
onto Rubies it cannot boot on — 3.4 dropped mutex_m from the default gems and
Rails 6.1 needs it. That is the same failure that made the suite unrunnable
before #8, except a consumer hits it at require time instead.

.rubocop.yml separately claimed TargetRubyVersion: 2.5, which the pinned
RuboCop no longer resolves against anything real.

What's here

  • required_ruby_version = ['>= 3.0', '< 3.4']
  • TargetRubyVersion: 3.0, matching the floor rather than contradicting it
  • The specs job runs as a matrix across 3.0, 3.1, 3.2 and 3.3

The matrix is the point. A declared range nothing exercises is a guess, and this
gem has just spent three years demonstrating where that leads.

Verification

All four pass, so the range is measured rather than asserted:

Specs (Ruby 3.0) pass
Specs (Ruby 3.1) pass
Specs (Ruby 3.2) pass
Specs (Ruby 3.3) pass
Lint pass

3.0 went in provisionally — it would not build locally, so CI decided it. It
passes, so the floor is wider than I could confirm by hand, and no consumer on
3.0 gets locked out.

Notes

The upper bound comes off with the Rails 7/8 upgrade, which is what actually
blocks 3.4. Until then it is load-bearing.

.ruby-version stays at 3.3.11 for local development and for the lint job;
only the specs job varies.

The gemspec constrained nothing, so the gem installed happily onto Rubies
it cannot boot on: 3.4 dropped mutex_m from the default gems and Rails 6.1
needs it. .rubocop.yml separately claimed 2.5, which no longer resolves.

The specs job becomes a matrix so the range is tested rather than asserted.
3.0 through 3.3 all pass, which is what the constraint now declares.
@IgorFroehner
IgorFroehner marked this pull request as ready for review August 13, 2026 19:34
@IgorFroehner
IgorFroehner merged commit 01316cb into master Aug 13, 2026
5 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