Repository navigation
Modernize CI through Ruby 4.0, Mongoid 9 and MongoDB 8 - #282
Merged
Merged
Conversation
dblock
force-pushed
the
dblock/modernize-ci
branch
from
October 14, 2026 22:37
d05b9b7 to
c7ac3a2
Compare
Danger ReportNo issues found. |
dblock
force-pushed
the
dblock/modernize-ci
branch
2 times, most recently
from
October 14, 2026 23:11
d126d74 to
f071879
Compare
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
dblock
force-pushed
the
dblock/modernize-ci
branch
from
October 14, 2026 23:15
f071879 to
47af5e0
Compare
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
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
e6e788b3f88d81b219da7daf67577f8372081ebeonly 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 on47af5e0is 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.