Skip to content

Test the gem on Ruby 3.4.11, the version its consumers actually run - #5

Merged
rheos merged 1 commit into
mainfrom
chore/ruby-3-4-parity
Sep 27, 2026
Merged

rheos merged 1 commit into
mainfrom
chore/ruby-3-4-parity

Conversation

@rheos

@rheos rheos commented Sep 26, 2026 •

Copy link
Copy Markdown
Collaborator

Found while auditing Dockerfile Ruby versions after the fleet walk (rheos/growoperative-api#55).

The gap

gem/Dockerfile built on ruby:3.2.2-slim and CI pinned a floating "3.2". So this gem was verified exclusively against a Ruby that no consumer uses — and an EOL one, since 3.2 went EOL 2026-03-31 and 3.2.2 was not even the final patch of that line.

Both consumers moved to Ruby 3.4.11 in the fleet walk — railsbackend and onloan-api each pull this gem by git tag. So the wire contracts this gem exists to pin were being asserted on 3.2 and executed on 3.4.

The floating "3.2" is the same failure shape foaf-protocol had with its ruby "~> 3.2" and rails "~> 7.1" constraints: a floating pin keeps resolving onto an aging line without ever looking out of date. That is how foaf-protocol ended up on 7.2.3.2 while the rest of the fleet sat on 7.1.6, with nobody having decided either.

Verification

Built the gem's own Dockerfile on 3.4.11 (it needs libsecp256k1 native deps, so the image is the right harness) and ran the suite with the contracts/ fixtures mounted:

36 examples, 0 failures, 1 pending. The gem was already fine on 3.4 — it had simply never been run there.

Not addressed here

The gemspec claims required_ruby_version = ">= 2.7" and nothing tests that floor. It is either aspirational or it wants a CI matrix. Worth deciding deliberately rather than leaving the claim both untested and unstated — but that is a separate change from closing the consumer-parity gap.

Refs rheos/growoperative-api#55

Summary by CodeRabbit

  • Chores
    • Updated the Ruby version used for automated tests and the gem’s container image to Ruby 3.4.11, replacing the previously configured Ruby versions. This keeps testing and container builds on the same Ruby release. No changes to the gem’s public declarations are included.

The gem's Dockerfile built on ruby:3.2.2-slim and CI pinned a floating
"3.2", so this gem was verified exclusively against a Ruby that no
consumer uses - and an EOL one, since 3.2 went EOL 2026-03-31 and 3.2.2
was not even the final patch of that line.

Both consumers moved to Ruby 3.4.11 in the fleet walk
(rheos/growoperative-api#55): railsbackend and onloan-api each pull this gem
by git tag. So the wire contracts this gem exists to pin were being
asserted on 3.2 and executed on 3.4.

The floating "3.2" is the same failure shape foaf-protocol had with its
`ruby "~> 3.2"` and `rails "~> 7.1"` constraints: a floating pin keeps
resolving onto an aging line without ever looking out of date.

Suite green on 3.4.11: 36 examples, 0 failures, 1 pending.

Note not addressed here: the gemspec claims
required_ruby_version = ">= 2.7" and nothing tests that floor. It is
either aspirational or wants a CI matrix; worth deciding deliberately
rather than leaving both untested and unstated.

Refs rheos/growoperative-api#55

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Sep 26, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

Navigate logical layers of code changes, visualize relationships, and explore their blast radius.

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Advanced

Run ID: 161e8b2c-4ae3-4dfe-9d57-dcf2188389c4

📥 Commits

Reviewing files that changed from the base of the PR and between a359046 and cc868b2.

📒 Files selected for processing (2)
  • .github/workflows/test.yml
  • gem/Dockerfile

Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 9 remain after this review.


📝 Walkthrough

Walkthrough

The test workflow and Docker base image now use Ruby 3.4.11. The workflow comments describe the consumer fleet’s Ruby version and the prior version’s end-of-life status.

Changes

Ruby version update

Layer / File(s) Summary
Update Ruby versions
.github/workflows/test.yml, gem/Dockerfile
The test workflow pins Ruby to 3.4.11. The Docker base image changes to ruby:3.4.11-slim. The workflow comments describe the consumer fleet’s Ruby version and the prior version’s end-of-life status.

Priority: ➖ Normal

Estimated code review effort: 2 (Simple) | ~5 minutes

Change: Other

Merge Risk: ⚪ Minimal · up to cc868

The test workflow and gem container now target Ruby 3.4.11, matching the stated consumer runtime. The inspected changes reveal no actionable merge-blocking risk; CI and Docker execution were not independently verified.

Architecture Summary

Architecture risk: 🔵 Low · up to cc868

The change affects 1 system.

Changed systems: gem

Architecture concerns
No architecture-level concerns identified.

Review details

Systems and components

  • observed — gem (service) was modified; 1 changed file maps to changed impact.

Before / after behavior

  • observed — Modified behavior in gem/Dockerfile: The Docker base image changes from Ruby 3.2.2 slim to Ruby 3.4.11 slim.
  • observed — Modified behavior in .github/workflows/test.yml: The Ruby setup version changes from 3.2 to the pinned 3.4.11; comments describing the consumer fleet and the prior version’s end-of-life status are added.
🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly describes the main change: updating gem testing to Ruby 3.4.11, which matches the reported consumer runtime.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0…
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR

Comment @coderabbitai help to get the list of available commands.

@rheos
rheos merged commit 0bc3af7 into main Sep 27, 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