From 03321bef140c9338fc602d10f865c55a9342d9eb Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Mon, 26 Oct 2026 14:17:16 +0000 Subject: [PATCH 1/6] Bump Ruby from 4.0.1 to 4.0.9. 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 --- .github/workflows/parallel_ci.yml | 2 +- .github/workflows/rubocop.yml | 2 +- .ruby-version | 2 +- Dockerfile | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/parallel_ci.yml b/.github/workflows/parallel_ci.yml index 9cbee50f4..bc0060a85 100644 --- a/.github/workflows/parallel_ci.yml +++ b/.github/workflows/parallel_ci.yml @@ -71,7 +71,7 @@ jobs: - name: Set up Ruby uses: ruby/setup-ruby@v1 with: - ruby-version: 4.0.1 + ruby-version: 4.0.9 - uses: actions/cache@v6 with: path: vendor/bundle diff --git a/.github/workflows/rubocop.yml b/.github/workflows/rubocop.yml index aac05445c..84e4fa52d 100644 --- a/.github/workflows/rubocop.yml +++ b/.github/workflows/rubocop.yml @@ -20,7 +20,7 @@ jobs: - name: Set up Ruby uses: ruby/setup-ruby@v1 with: - ruby-version: 4.0.1 + ruby-version: 4.0.9 bundler-cache: true - name: Run RuboCop run: bundle exec rubocop --parallel diff --git a/.ruby-version b/.ruby-version index 90cdbdcbb..042302ee7 100644 --- a/.ruby-version +++ b/.ruby-version @@ -1 +1 @@ -ruby-4.0.1 +ruby-4.0.9 diff --git a/Dockerfile b/Dockerfile index cc393a6ea..d34dedc3f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -12,7 +12,7 @@ RUN usermod -a -G docker_env app # Use baseimage-docker's init process. CMD ["/sbin/my_init"] -RUN bash -lc 'rvm --default use ruby-4.0.1' +RUN bash -lc 'rvm --default use ruby-4.0.9' # Update installed APT packages RUN apt-get update && \ From ff6213d35939af3cddf0caf3f49cc86c6df023fc Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Mon, 26 Oct 2026 15:05:36 +0000 Subject: [PATCH 2/6] Restore Ruby CI jobs to ubuntu-latest. 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 --- .github/workflows/parallel_ci.yml | 2 +- .github/workflows/rubocop.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/parallel_ci.yml b/.github/workflows/parallel_ci.yml index bc0060a85..da0089f3c 100644 --- a/.github/workflows/parallel_ci.yml +++ b/.github/workflows/parallel_ci.yml @@ -10,7 +10,7 @@ on: jobs: parallel-test: - runs-on: ubuntu-24.04 + runs-on: ubuntu-latest strategy: fail-fast: ${{ inputs.fail-fast }} matrix: diff --git a/.github/workflows/rubocop.yml b/.github/workflows/rubocop.yml index 84e4fa52d..44be96ddf 100644 --- a/.github/workflows/rubocop.yml +++ b/.github/workflows/rubocop.yml @@ -11,7 +11,7 @@ on: jobs: build: - runs-on: ubuntu-24.04 + runs-on: ubuntu-latest env: BUNDLE_WITHOUT: "default doc job cable storage ujs test db" BUNDLE_PATH: "vendor/bundle" From 987edf8e258936a56d6319d9e647e574b422bb1b Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Mon, 26 Oct 2026 15:16:54 +0000 Subject: [PATCH 3/6] Install ntpsec-ntpdate for CI time sync. 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 --- .github/workflows/parallel_ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/parallel_ci.yml b/.github/workflows/parallel_ci.yml index da0089f3c..a325c0c98 100644 --- a/.github/workflows/parallel_ci.yml +++ b/.github/workflows/parallel_ci.yml @@ -65,7 +65,7 @@ jobs: - name: Sync time run: | sudo apt-get update - sudo apt-get install -y ntpdate + sudo apt-get install -y ntpsec-ntpdate sudo ntpdate pool.ntp.org - name: Set up Ruby From d5a3e16fbd5d777c03780a663e02ed5df2bcb0ca Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Mon, 26 Oct 2026 15:24:09 +0000 Subject: [PATCH 4/6] Install libmysqlclient-dev for Ubuntu 26.04 CI. 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 --- .github/workflows/parallel_ci.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/parallel_ci.yml b/.github/workflows/parallel_ci.yml index a325c0c98..6474df03f 100644 --- a/.github/workflows/parallel_ci.yml +++ b/.github/workflows/parallel_ci.yml @@ -75,13 +75,15 @@ jobs: - uses: actions/cache@v6 with: path: vendor/bundle - key: ${{ runner.os }}-gems-${{ hashFiles('**/Gemfile.lock') }} + key: ${{ runner.os }}-ruby-4.0.9-libmysqlclient24-gems-${{ hashFiles('**/Gemfile.lock') }} restore-keys: | - ${{ runner.os }}-gems- + ${{ runner.os }}-ruby-4.0.9-libmysqlclient24-gems- - name: Install ImageMagick run: | sudo apt-get update sudo apt-get install -y imagemagick + - name: Install MySQL client + run: sudo apt-get install -y libmysqlclient-dev - name: Install env: MYSQL_PORT: ${{ job.services.mysql.ports[3306] }} From 4215a4a0ce9e0eaf5ac6843571c06dc35221261d Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Mon, 26 Oct 2026 15:31:10 +0000 Subject: [PATCH 5/6] Build on Passenger Ruby 4.0 image 3.2.2. 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 --- Dockerfile | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/Dockerfile b/Dockerfile index d34dedc3f..aa75e4ca3 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM phusion/passenger-ruby40:3.1.6 +FROM phusion/passenger-ruby40:3.2.2 # Set correct environment variables. ENV HOME /home/app @@ -12,8 +12,6 @@ RUN usermod -a -G docker_env app # Use baseimage-docker's init process. CMD ["/sbin/my_init"] -RUN bash -lc 'rvm --default use ruby-4.0.9' - # Update installed APT packages RUN apt-get update && \ apt-get install -y \ @@ -21,7 +19,7 @@ RUN apt-get update && \ gnupg \ ca-certificates \ lsb-release \ - ntp \ + ntpsec \ nano \ tmux \ tzdata \ From 49098e0d1df909542cbccd760f1c06d73c9babfc Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Mon, 26 Oct 2026 15:39:17 +0000 Subject: [PATCH 6/6] Upgrade bootsnap so specs can load under coverage. 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 --- Gemfile.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 367b61fbe..694989465 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -147,8 +147,8 @@ GEM rdf-rdfxml (~> 3.3) rdf-turtle (~> 3.3, >= 3.3.1) thor (~> 1.5) - bootsnap (1.23.0) - msgpack (~> 1.2) + bootsnap (1.26.1) + msgpack (~> 1.5) brakeman (8.0.4) racc builder (3.3.0)