Techioz Blog

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 ファイルを変更した後は、必ずサーバーを再起動してください。