🐛
Railsでuninitialized constant ActiveStorage::Blob::Analyzableが発生する
書いた日
2022/1/4
タグ
技術
RailsでActiveStorageに関連する機能を使用しようとすると
uninitialized constant ActiveStorage::Blob::Analyzable
が発生します。自分の環境は以下の通りです。
- 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にも記載がありますが回避策がいくつかあるので紹介します。
config.autoloader = :classic
を設定する- 古い機能を使うようにするのはあまりやりたくありません
config.eager_load = true
を設定する- development環境でeager_loadを有効にするのはつらいのでやりたくありません
- initializerであらかじめ
ActiveStorage::Blog
を呼び出しておく - https://github.com/rails/rails/issues/38681#issuecomment-964356367 でコメントいただいている方法です
- 今回の問題はActiveStorageの機能を使う際にRailsのautoloadでうまく
ActiveStorage::Blog::Analyzable
が読み込めないのが問題なので、initializerであらかじめロードしておけばエラーは発生しないという理解です