Devise 5 および Formtastic 6 への対応
ActiveAdmin が Devise 5 および Formtastic 6 との互換性を確立しました。Devise については Devise 4 との後方互換性を維持しつつ、Formtastic は 6.0 以上を必須要件とする方針を採用しています。
背景
この変更は #8906 で報告されていた問題に対応したものです。Devise 5 のリリースに伴い、テストが失敗する状態が続いていました。その根本原因は Formtastic 側の未解決の問題にあり、Gemfile には # TODO: relax this dependency when formtastic/formtastic#1401 will be fixed というコメントとともに devise のバージョンが ~> 4.9 に固定されていました。
Formtastic 6 のリリースによってこのブロッカーが解消されたため、Devise の制約を緩和し、同時に Formtastic の最低バージョンを引き上げる形でこの変更が実現しました。
技術的な変更
Dependency に関する変更は、activeadmin.gemspec、lib/active_admin/dependency.rb、および各 Gemfile の3か所に及んでいます。
lib/active_admin/dependency.rb では、Devise の実行時バージョンチェック範囲が拡張されました。
変更前:
DEVISE = ">= 4.0", "< 5"
変更後:
DEVISE = ">= 4.0", "< 6"
activeadmin.gemspec では、Formtastic の最低バージョンが引き上げられました。
変更前:
s.add_dependency "formtastic", ">= 5.0"
変更後:
s.add_dependency "formtastic", ">= 6.0"
各 Gemfile(Gemfile、gemfiles/rails_72/Gemfile、gemfiles/rails_80/Gemfile)では、devise の ~> 4.9 固定が解除されてバージョン指定なしとなり、formtastic の下限が >= 5.0.0 から >= 6.0.0 に変更されています。また Gemfile.lock では Devise が 4.9.4 から 5.0.2 に更新され、Devise 5 で追加された railties >= 7.0 の要件も反映されています。
CONTRIBUTING.md および spec/tasks/gemfile_spec.rb では、bundle install を bundle install --all に変更するコマンド構文の更新も行われています。
設計判断
Devise については最低バージョンを 4.0 に据え置き、Devise 5 のみを上限として許容する方式が採用されました。PR の説明によれば、Devise 4 は引き続きサポート対象であり、最低バージョンを引き上げることでダウンストリームアプリに不要なアップグレードを強制することを避けるためです。CI のテストマトリックスは Devise 5 のみで実行し、現行バージョンとの互換性を検証します。
一方 Formtastic については、>= 6.0 への引き上げを必須としています。PR では、Formtastic 6 が ActiveAdmin の最低 Ruby 要件に合致し、Devise 4 および 5 の両方と互換性があることがその根拠として示されています。旧来の ~> 4.9 固定に記されていた TODO コメントが削除されたことは、Formtastic 側のブロッカーが正式に解消されたことを明示しています。
まとめ
Devise の最低バージョンを変えずに上限のみを緩和し、Formtastic は新バージョンへ引き上げるという二段階の判断により、既存アプリへの影響を最小化しながら Devise 5 との互換性を確立しています。長期間 TODO として残っていた依存関係の固定が、Formtastic 6 のリリースを契機として解消された点が、この変更の核心です。