Rails3 で管理画面を作成するなら RailsAdmin で決まりかも

はじめに

アプリの管理画面はユーザーに見せないから、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 のルーティングのバグでハマった。

アプリに管理画面を組み込めたので表示してみる
bundle exec rails s

で開発サーバーを起動して、localhost:3000/rails_admin にアクセスしてみる。

ログインページが表示される。URL は /admins になっているので、ちゃんと Admin クラスを使えているようだ。

Sign up したらダッシュボードが表示される。

Twitter Bootstrap を使っているので見栄えも悪くない。

まとめ

新しく追加したモデルを、何もしなくても RailsAdmin で管理できるのが琴線に触れた。導入が簡単なのは重要だけど、導入した後にかかる手間も結構重要。

データ編集ができるのは当然として、モデル間のリレーションをたどれるし、エクスポートまで出来るしと多機能。自分の用途では今のところカスタマイズの必要性も感じない。管理画面はこれで十分だな。