Repository navigation
Bump Ruby from 4.0.1 to 4.0.9 - #1631
Merged
Merged
Conversation
Ubuntu 26.04, which ubuntu-latest tracks, publishes Ruby 4.0.9 and not 4.0.1. Keep GitHub Actions on ubuntu-latest and select 4.0.9 in the Dockerfile via RVM. Co-authored-by: jrhoads <jrhoads@datacite.org>
Master pinned these jobs to ubuntu-24.04 so Ruby 4.0.1 would still install. Ruby 4.0.9 is published on Ubuntu 26.04, so the jobs can use GitHub's ubuntu-latest label again. Co-authored-by: jrhoads <jrhoads@datacite.org>
cursor
Bot
force-pushed
the
cursor-bump-ruby-4-0-9-1aea
branch
from
October 26, 2026 15:05
d681268 to
ff6213d
Compare
Ubuntu 26.04 dropped the ntpdate package. ntpsec-ntpdate provides the ntpdate shim, so the parallel jobs can still step the clock on ubuntu-latest. Co-authored-by: jrhoads <jrhoads@datacite.org>
The cached mysql2 extension was built against libmysqlclient.so.21. ubuntu-latest now provides libmysqlclient24, so install the 8.4 client headers and stop restoring the old gem cache. Co-authored-by: jrhoads <jrhoads@datacite.org>
The 3.2.2 base already defaults to Ruby 4.0.9, so the RVM pin is unnecessary. Ubuntu 26.04 replaced the ntp package with ntpsec. Co-authored-by: jrhoads <jrhoads@datacite.org>
Ruby 4.0.9 raises from InstructionSequence#to_binary when SimpleCov is already running. Bootsnap 1.23.0 probes that during load and only rescues TypeError. 1.26.1 handles the coverage error. Co-authored-by: jrhoads <jrhoads@datacite.org>
jrhoads
marked this pull request as ready for review
October 26, 2026 16:02
richardhallett
approved these changes
Oct 26, 2026
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.
Purpose
GitHub's
ubuntu-latestlabel is Ubuntu 26.04 as of October 2026. That image publishes Ruby 4.0.9 and does not publish Ruby 4.0.1, soruby/setup-rubycannot install 4.0.1 there. Master temporarily pins the Ruby CI jobs toubuntu-24.04so 4.0.1 still installs. This removes that pin, bumps Ruby to 4.0.9, and moves the app image to Passenger 3.2.2.Approach
Rebased onto current
masterafter thecrass1.0.8 bump and theubuntu-24.04pin landed. Keep the lockfile bump. Change the Ruby pins from 4.0.1 to 4.0.9, set the two pinned jobs back toruns-on: ubuntu-latest, and install the MySQL client library Ubuntu 26.04 actually ships.The Passenger base image is now
phusion/passenger-ruby40:3.2.2, which already defaults to Ruby 4.0.9. Ubuntu 26.04 replacedntpwithntpsec, and replacedntpdatewithntpsec-ntpdate.Specs start SimpleCov before Bootsnap. On Ruby 4.0.9,
InstructionSequence#to_binaryraisesshould not compile with coverage, and Bootsnap 1.23.0's load-time probe only rescuesTypeError. Bootsnap 1.26.1 handles that.Key Modifications
.ruby-version:ruby-4.0.1→ruby-4.0.9.github/workflows/rubocop.ymland.github/workflows/parallel_ci.yml:ruby-version: 4.0.9, andruns-on: ubuntu-24.04→ubuntu-latest.github/workflows/parallel_ci.yml: Sync time installsntpsec-ntpdateand still runsntpdate pool.ntp.org. Installlibmysqlclient-dev(pullslibmysqlclient24) and key the gem cache to that library somysql2is not restored from alibmysqlclient.so.21buildDockerfile:FROM phusion/passenger-ruby40:3.2.2, installntpsecinstead ofntp, and drop the RVM default line because the base image already provides Ruby 4.0.9Gemfile.lock:bootsnap1.23.0 → 1.26.1.crassstays at 1.0.8Important Technical Details
phusion/passenger-ruby40:3.2.2completed, and the container booted.GET /heartbeatreturnedOKfrom nginx and Phusion Passenger 6.2.1, running Ruby 4.0.9.SimpleCov.startraisesRuntimeError: should not compile with coveragefromiseq.rb:23. Bootsnap 1.26.1 loads cleanly in that same setup. The Gemfile constraint~> 1.23already allowed 1.26.1.BUNDLED WITHinGemfile.lockis Bundler 4.0.14, not a Ruby version.AGENTS.mdstill describes the Cursor Cloud VM, which has Ruby 4.0.1 installed via rbenv. That file is environment documentation, not a toolchain pin.Types of changes
Reviewer, please remember our guidelines: