Ruby 2.5 を 3.2.1 に、Rails バージョンを 5.2.2 から 7.0.4.2 に更新中に、指定されていないクラスをロードしようとしました: Date (Psych::DisallowedClass)
概要
bootboot gem を使用して、Ruby 3.2.1 と Rails 7.0.4.2 で実行中にアプリケーションをデュアルブートしています。 Docker でコンテナを起動しているときにこの問題に直面しています。
インターネット上で提供されている diff ソリューションを試しました。つまり、次のとおりです。 application.rb で使用する config.active_record.yaml_column_permitted_classes = [シンボル、日付、時刻、ActiveSupport::TimeWithZone、ActiveSupport::TimeZone]
application.rb で使用する config.active_record.use_yaml_unsafe_load = true
アプリケーションでは、Blueprinter gem を使用してシリアル化していますが、この gem をバージョン 0.25.3 にアップグレードしても同じエラーが発生します
解決策
先ほどエラーに返信しました。使用したい特定のクラスを [禁止クラス] 設定に設定する必要があります。たとえば、シンボル、日付、時刻などです。この場合は日付です。
これらのクラスの解析を許可すると、セキュリティに影響することに注意してください。
application.rb 内:
config.active_record.yaml_column_permitted_classes = [
Date,
DateTime,
...
]
この修正を実行すると、他のクラスが見つかる可能性があります。application.rb ファイルを変更した後は、必ずサーバーを再起動してください。