minitest (< 6) を開発依存に追加し Ruby 4.0 の CI テストを導入
この PR は、テストフレームワーク minitest をバージョン上限付きで開発依存に追加すると同時に、GitHub Actions の CI マトリクスに Ruby 4.0 を組み込み、テスト環境の範囲を拡張します。
背景
CI の対象バージョンとテストフレームワークの依存関係が変更された背景は、リポジトリが複数の Ruby と Rails の組み合わせでの動作保証を継続的に行っている点にあります。現在のテストスイートは minitest 5 系で実行されており、バージョン上限を明示することで意図しないメジャーアップグレードを防止できます。したがって、依存制約と新しい Ruby バージョンの追加は、テストの安定性を保つための直接的な対策です。
技術的な変更
主な技術的変更は 3 ファイルに分かれ、CI 設定、ロックファイル、gemspec がそれぞれ更新されています。まず .github/workflows/ci.yml で Ruby バージョン配列に '4.0' が追加され、Rails 6.1 と 7.0 に対する除外エントリが新設されました。
@@ -6,7 +6,7 @@ jobs:
strategy:
fail-fast: false
matrix:
- ruby: [ '2.7', '3.0', '3.1', '3.2', '3.3', '3.4', 'head', 'truffleruby' ]
+ ruby: [ '2.7', '3.0', '3.1', '3.2', '3.3', '3.4', '4.0', 'head', 'truffleruby' ]
rails: [ '6.1', '7.0', '7.1', '8.0', 'main' ]
exclude:
@@ -21,10 +21,16 @@ jobs:
rails: '8.0'
- ruby: '3.1'
rails: 'main'
+ - ruby: '3.2'
+ rails: 'main'
- ruby: '3.4'
rails: '6.1'
- ruby: '3.4'
rails: '7.0'
+ - ruby: '4.0'
+ rails: '6.1'
+ - ruby: '4.0'
+ rails: '7.0'
次に Gemfile.lock では minitest が 5.27.0 に更新され、開発依存に minitest (< 6) が明示的に記載されました。また、Bundler のバージョンが 4.0.12 に合わせて更新されています。
@@ -61,7 +61,7 @@ GEM
crass (~> 1.0.2)
nokogiri (>= 1.12.0)
mini_portile2 (2.8.9)
- minitest (5.25.5)
+ minitest (5.27.0)
nokogiri (1.18.10)
@@ -121,8 +121,9 @@ PLATFORMS
DEPENDENCIES
activemodel
globalid!
+ minitest (< 6)
railties
rake
@@ -127,3 +128,4 @@ BUNDLED WITH
- 2.4.2
+ 4.0.12
最後に globalid.gemspec に minitest の開発依存が追加され、バージョン上限 < 6 が明記されています。
@@ -21,6 +21,7 @@ Gem::Specification.new do |s|
s.add_runtime_dependency 'activesupport', '>= 6.1'
s.add_development_dependency 'rake'
+ s.add_development_dependency 'minitest', '< 6'
s.metadata = {
これらの変更により、CI が Ruby 4.0 でのテスト実行を行うようになり、同時に minitest が 6 系へ上がるリスクを事前に抑制できるようになりました。コード上のロジックは追加・削除のみで、既存のテストロジックに影響を与える点はありません。
設計判断
バージョン上限付きの開発依存と CI マトリクス拡張は、テスト実行時の環境決定を明示的に管理する設計判断といえます。minitest (< 6) の制約は、現在のテストスイートが期待するバージョン範囲を保証する目的で追加され、将来的なメジャーリリースによる破壊的変更の検出を容易にします。CI に Ruby 4.0 を組み込むことで、サポート予定の新バージョンが実際にテストパスするかを早期に確認でき、未検証の Rails 組み合わせは除外リストで安全に管理されています。
まとめ
本 PR は minitest のバージョン上限を開発依存に設定し、同時に Ruby 4.0 での CI テストを導入した点が主な変更です。これにより、テスト環境のバージョン管理が明確化され、将来的なライブラリや Ruby 本体のバージョン更新時に起こり得る互換性問題を事前に検出しやすくなります。