🐛

Railsでuninitialized constant ActiveStorage::Blob::Analyzableが発生する

RailsでActiveStorageに関連する機能を使用しようとすると が発生します。
自分の環境は以下の通りです。
  • Rails 7.1.0.alpha
  • ruby 3.1.0p0 (2021-12-25 revision fb4df44d16) [x86_64-darwin20]
 
すでに同じIssueがいくつか報告されているので自分でIssueの起票はしていません。
 
zeitwerkをdisabledにすると解消するようなのでzeitwerkとの食い合わせの問題なように思えますが根本的に何が原因なのかの特定が難しそうなように見えます。
↑のIssueでも報告者は多数いますが未だに解決していないようです。

Workaround

↑のIssueにも記載がありますが回避策がいくつかあるので紹介します。
  • を設定する
    • 古い機能を使うようにするのはあまりやりたくありません
  • を設定する
    • development環境でeager_loadを有効にするのはつらいのでやりたくありません
  • initializerであらかじめ を呼び出しておく
    • https://github.com/rails/rails/issues/38681#issuecomment-964356367 でコメントいただいている方法です
    • 今回の問題はActiveStorageの機能を使う際にRailsのautoloadでうまく が読み込めないのが問題なので、initializerであらかじめロードしておけばエラーは発生しないという理解です