現象
Rails のプロジェクトに、RailsAdmin を設定して、[Rails.root]/config/initializers/rails_admin.rb
にいろいろと設定を加えて、rails s
を起動して、routes で設定した rails_admin のダッシュボードを見に行くと、
な画面が出て、リロードすると、
な画面が出て、さらにリロードすると、ちゃんと正常にrails_adminのダッシュボードが表示される、という、謎な現象が起きて戸惑っておりました。
結論を先に言うと
[Rails.root]/config/initializers/rails_admin.rb
にタイプミスがあるとこういう現象が起きますよ、と。
詳しく話すと
前者のエラー
devise を用いて、AdminUser モデルを使ってユーザ認証を行おうとしていたのですが、rails_admin上から変更できるものを絞ろうと include_fields で指定したところ
- 誤:password_confrmation
- 正:password_confirmation
という typo をしており、上記をきちんと直せば、最初のエラー画面が出なくなりました。
後者のエラー
同様ですね。
- 誤:iclude_all_fields
- 正:include_all_fields
こちらを直すと、rails s
でサーバを起動した直後から、ダッシュボードの画面が表示されるようになりました。
typoがあるときとないときの rails_admin の挙動
本来(typo修正後)は、AdminUserの編集画面が下記のようになりました。
これでは想定通りに email, password, password_confirmation, status だけを編集できるようになっています。
typo 修正前、複数回のエラー画面を経た上でアクセスする編集画面は、下記のような画面になっていました。
include_fields を設定しない、取り急ぎ、テーブルにあるカラムを全て編集対象にする、という、rails_admin デフォルトの挙動となっています。
要は何がいいたいのかと言いますと
typo をするなとは一切述べるつもりはありません。
ただ、include_fields のような箇所を間違えるとただでさえ間違いに気づきにくく、かつ、エラーメッセージも初見ではかなり不親切です。
そして rails_admin は実装が結構複雑というか、コードが 9998行あるファイルとかあって、リファクタリングも厳しいので、ここらへん分かりやすく例外出してよ、というのも、厳しいでしょう(自分はちょっとそこの修正 pull request を送る元気はないです)。
とりあえず、このような地雷を踏んだ人間がいる、ということだけ、ここに記しておきます。