Skip to content

Modernize CI through Ruby 4.0, Mongoid 9 and MongoDB 8 - #282

Merged
dblock merged 1 commit into
mongoid:masterfrom
dblock:dblock/modernize-ci
Oct 14, 2026
Merged

dblock merged 1 commit into
mongoid:masterfrom
dblock:dblock/modernize-ci

Conversation

@dblock

@dblock dblock commented Oct 14, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

Modernize checkout actions and MongoDB startup, with representative version boundaries rather than a Cartesian matrix. Preserve legacy ODM coverage and existing experimental/Danger behavior. Ruby 4.0 + Mongoid 9 + MongoDB 8.0 is a required, non-experimental job. Explicitly bundle removed stdlib dependencies where needed; ignored lockfiles are not committed.

Validation

179 examples, 0 failures (Ruby 4.0.6, Mongoid 9.0.12, MongoDB 8.2.4). The local server is standalone; CI retains replica-set coverage.

Workflow YAML parsing and git diff --check pass. Local MongoDB 8.2 validation uses an uncommitted client-port override to avoid interrupting the existing MongoDB 7 server. Legacy combinations and Ubuntu-specific execution are left to GitHub Actions; CI results are summarized below.

Interpreter compatibility fixes

The original JRuby failures were BSON 5.2.0 directly constructing RubyFixnum, which became abstract in JRuby 10.1. The original TruffleRuby crash (corrupt handle 0xa8) occurs while BSON's C extension retains an unsafe array-storage pointer across Ruby calls.

The test Gemfile pins upstream BSON commit e6e788b3f88d81b219da7daf67577f8372081ebe only on JRuby/TruffleRuby. This contains the JRuby factory-method fix from mongodb/bson-ruby#377 and the native array lifetime fix from mongodb/bson-ruby#371. Replace this pin with a released BSON version once both fixes ship. Git sources do not include a prebuilt Java jar, so CI compiles the Java extension against the selected JRuby runtime with JDK 21. MRI dependencies are unchanged; no interpreter rows were removed, no failure policies relaxed, and no tests skipped.

Final local revalidation: Ruby 4.0.6 / Mongoid 9 / local MongoDB 7.0.12, 179 examples, 0 failures; Gemfile RuboCop, YAML parsing, and diff checks pass. The test bootstrap also sets Mongoid's log level numerically, avoiding JRuby/ActiveSupport lookup of inherited Logger::INFO. Final GitHub CI on 47af5e0 is fully green: all 15 matrix entries, RuboCop, and Danger passed (17 checks), including JRuby, JRuby-head, TruffleRuby-head, and Ruby 4.0 / Mongoid 9 / MongoDB 8.0. No remaining blockers.

@dblock
dblock force-pushed the dblock/modernize-ci branch from d05b9b7 to c7ac3a2 Compare October 14, 2026 22:37
@github-actions

github-actions Bot commented Oct 14, 2026 •

Copy link
Copy Markdown

Danger Report

No issues found.

View run

@dblock
dblock force-pushed the dblock/modernize-ci branch 2 times, most recently from d126d74 to f071879 Compare October 14, 2026 23:11
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@dblock
dblock force-pushed the dblock/modernize-ci branch from f071879 to 47af5e0 Compare October 14, 2026 23:15
@dblock
dblock merged commit bf2c5c7 into mongoid:master Oct 14, 2026
19 checks passed
@dblock
dblock deleted the dblock/modernize-ci branch October 17, 2026 02:21
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