Ruby 3.2 サポートの終了と最低バージョンの 3.3 への引き上げ
Active Admin が Ruby 3.2 のサポートを終了し、最低サポートバージョンを 3.3 に引き上げました。gemspec・RuboCop・CI・開発者向けドキュメントの4箇所が一貫して更新されています。
背景
Ruby 3.2 がEOL(End of Life)を迎えたことが、今回のサポート終了の直接的な理由です。EOLとなったバージョンをサポート対象に含め続けることは、セキュリティパッチの適用されないRubyランタイム向けに互換性を維持するコストを意味します。Active Admin はこれを機に、サポートマトリクスからRuby 3.2を除外しています。
技術的な変更
最低Rubyバージョンの宣言が、プロジェクト全体で統一的に 3.2 から 3.3 へ更新されました。変更は以下の4ファイルに及びます。
activeadmin.gemspec の required_ruby_version がインストール時の制約として機能するため、最も実質的な変更です。
変更前:
s.required_ruby_version = ">= 3.2"
変更後:
s.required_ruby_version = ">= 3.3"
.rubocop.yml の TargetRubyVersion は、RuboCopが静的解析時に参照するターゲットバージョンです。この値が 3.2 のままでは、3.3以降で利用可能な構文に対して不要な警告が出たり、逆に3.2向けの制約が残り続けたりする問題が生じます。
AllCops:
TargetRubyVersion: 3.3 # 変更前: 3.2
.github/workflows/ci.yaml からは Ruby 3.2 のマトリクスエントリが削除され、CIは 3.3 と 3.4 のみで実行されます。.github/copilot-instructions.md の最低バージョン記述も同様に更新されています。
設計判断
4ファイルへの変更を単一PRにまとめることで、「最低バージョンの宣言」が分散しないよう一貫性を保っています。gemspecによるインストール制約、RuboCopによる静的解析設定、CIのテストマトリクス、そしてCopilot向けの開発コンテキストが足並みを揃えることで、「3.3未満では動作を保証しない」という意図がツールチェーン全体に伝わる構造になっています。
RuboCopの TargetRubyVersion を gemspec の required_ruby_version と同期させるのは特に重要な点です。これが一致していないと、実際にサポートするバージョンと静的解析の基準がずれ、誤検知や見落としの原因になります。
まとめ
EOLとなったRuby 3.2を一括してサポート対象から除外することで、Active Admin のメンテナンスコストを削減し、3.3以降の言語機能を安心して利用できる基盤が整いました。gemspec・RuboCop・CI・ドキュメントを同一PRで整合させるアプローチは、サポートバージョン変更の際の手本となる変更管理の実践例といえます。