はじめに
アプリの管理画面はユーザーに見せないから、Rails プラグインでサクッと作ってしまいたい。Rails で管理画面を生成できるプラグインは Typus、ActiveAdmin とかあるけど、個人的に RailsAdmin で決まりかな、って思ってる。
RailsAdmin の何がいいか
RailsAdmin で気に入っているのは
- RailsEngine として実装してあるので、マウントするだけで組み込める
- 新しく追加したモデルを何もせずに RailsAdmin で管理できる
の2点。特に、モデルが増えるたびにジェネレータを実行して管理画面用のクラスを生成しなくていい、というのはポイント高い。
RailsAdmin の導入は README の通りにやれば簡単
…と思っていたけど、2日ほどハマってしまった。
RailsAdmin の導入で実際に行った手順をメモしておく
rails_admin の gem をインストール
まずは Gemfile に rails_admin を追加。
gem "rails_admin"
Bundler を実行して gem をインストールする。
bundle
管理画面の認証で使うモデルを先に作っておく
bundle exec rails g devise Admin bundle exec rake db:migrate
を実行する。
後述の RailsAdmin のジェネレーターでも作成できるけど、rake db:migrate を実行してくれないみたいで、エラーが発生して中断してしまった。
仕方ないので、先に devise のジェネレーターでモデルを生成し、rake db:migrate まで済ませておく。
RailsAdmin をアプリにインストールする
bundle exec rails g rails_admin:install
を実行。
途中で聞かれる管理画面の認証で使うモデルは、先ほど作成した Admin にする。管理画面の URL は /rails_admin。
ここで最初、管理画面の URL を /admin にしたくて、モデル名を AdminUser にしたら、RailsAdmin のルーティングのバグでハマった。
まとめ
新しく追加したモデルを、何もしなくても RailsAdmin で管理できるのが琴線に触れた。導入が簡単なのは重要だけど、導入した後にかかる手間も結構重要。
データ編集ができるのは当然として、モデル間のリレーションをたどれるし、エクスポートまで出来るしと多機能。自分の用途では今のところカスタマイズの必要性も感じない。管理画面はこれで十分だな。