From 7013f7707a5518267a1de9bb7055777518cf111b Mon Sep 17 00:00:00 2001 From: mitchh456 Date: Tue, 23 Jun 2026 14:26:11 -0600 Subject: [PATCH] Pin i18n < 1.15 on Ruby < 3.2 to keep CI deterministic The pre-3.2 CI matrix uses the default Gemfile, and Gemfile.lock is gitignored, so bundler resolves the latest i18n fresh on every run. i18n 1.15.0 started calling Fiber storage (`Fiber.[]`, Ruby 3.2+), so on Ruby <= 3.1 ActiveSupport failed to load with `NoMethodError: undefined method '[]' for Fiber:Class`, breaking `test (3.1)` (and any pre-3.2 lane that happened to resolve it). Upstream fixed this in i18n 1.15.2, but the gitignored-lock + unpinned-dep setup leaves the EOL-track Rubies exposed to the next such release. Pin them to the stable 1.14 line for a deterministic build; Ruby 3.2+ continues to use the latest i18n. Verified in a ruby:3.1 container: with the cap, i18n resolves to 1.14.8 and `require "active_support/core_ext/string/inflections"` (the exact require that failed in CI) loads cleanly. Co-Authored-By: Claude Opus 4.8 Claude-Session: https://claude.ai/code/session_01Spg5MGVB1XXoxJh6LnmgRu --- Gemfile | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Gemfile b/Gemfile index 03f82f81..860a1c47 100644 --- a/Gemfile +++ b/Gemfile @@ -4,3 +4,11 @@ source "https://rubygems.org" gemspec gem "rake", ">= 12.3.3" + +# i18n 1.15.0 started using Fiber storage (`Fiber.[]`), which only exists on +# Ruby 3.2+, so on older Rubies ActiveSupport blew up loading it with +# `NoMethodError: undefined method '[]' for Fiber:Class` (fixed upstream in +# 1.15.2). Gemfile.lock is gitignored, so CI resolves i18n fresh each run and is +# at the mercy of such transient bad releases on the pre-3.2 matrix. Keep those +# (EOL-track) Rubies pinned to the stable 1.14 line for a deterministic build. +gem "i18n", "< 1.15" if RUBY_VERSION < "3.2"