AutoFilteredParametersモジュールを内部実装としてマーク
本PRは、Active Recordの暗号化機能の内部実装である AutoFilteredParameters クラスを :nodoc: でマークし、公開APIドキュメントから除外しています。#55939 でこのクラスを削除する準備として、まず非公開化を行っています。
背景
AutoFilteredParameters は Active Record の暗号化機能の内部実装であり、公開APIとして利用されることを意図していません。#55939 では、フィルタパラメータ、フィルタ属性、暗号化属性を同期するための複数のコールバック機構を削除し、ActiveSupport.filter_parameters を単一の情報源として使用する設計変更が提案されています。
本PRはその前段階として、AutoFilteredParameters を公開APIから除外することで、将来の削除時にユーザーへの影響を最小化します。
技術的な変更
activerecord/lib/active_record/encryption/auto_filtered_parameters.rb のクラス定義に :nodoc: ディレクティブを追加しています。
変更後:
module ActiveRecord
module Encryption
class AutoFilteredParameters # :nodoc:
def initialize(app)
@app = app
@attributes_by_class = Concurrent::Map.new
この1行の追加により、RDocの生成時にこのクラスが公開ドキュメントから除外されます。クラスの機能や実装には一切変更がありません。
設計判断
本PRは、段階的な削除プロセス の第一段階として位置づけられています。
#55939 では、フィルタパラメータの管理を ActiveSupport.filter_parameters に集約する大規模なリファクタリングが提案されています。その変更では、Active Record のフィルタ属性が Active Record クラスに保存されることによる問題(自動ロード環境でのパラメータフィルタリングの遅延)も指摘されています。
:nodoc: による非公開化を先に行うことで、実装の削除時にユーザーが依存していた可能性のある公開APIを突然削除するリスクを回避しています。この2段階のアプローチにより、互換性への影響を最小化しながら、内部実装の整理を進められます。
本PRは、フィルタパラメータ管理の統合という大きな設計変更の準備段階として、段階的な移行パスを確保した判断といえます。