こんにちは、鈴木です。
管理機能を手軽に作成することができるライブラリ rails_admin をご紹介します。
- rails_admin (https://github.com/sferik/rails_admin)
rails_admin の導入
Gemfile に以下の行を追加します。
1 |
gem 'rails_admin' |
bundle install します。
1 |
bundle install |
エラーが出ました。
1 2 3 |
----- libxml2 is missing. please visit http://nokogiri.org/tutorials/installing_nokogiri.html for help with installing dependencies. ----- |
libxml2 が必要と言っているのでインストールします。
1 |
sudo apt-get install libxml2-dev |
bundle install します。
1 |
bundle install |
エラーが出ました。
1 2 3 |
----- libxslt is missing. please visit http://nokogiri.org/tutorials/installing_nokogiri.html for help with installing dependencies. ----- |
今度は libxslt が必要なのだとおっしゃっているのでインストールします。
1 |
sudo apt-get install libxslt-dev |
bundle install します。
1 |
bundle install |
インストールに成功しました。
セットアップ
セットアップします。
1 |
rails generate rails_admin:install |
様子を見ます。
1 2 3 4 5 6 7 8 |
- Hello, RailsAdmin installer will help you set things up! - I need to work with Devise, let's look at a few things first: - Checking for a current installation of devise... - Adding devise gem to your Gemfile: append Gemfile gemfile devise - Looks like you don't have devise installed! We'll install it for you: generate devise:install |
認証ライブラリである devise が必要であるがインストールされていないので、Gemfile に devise を追加して、インストールすると言っています。
1 2 |
Could not find gem 'devise (>= 0) ruby' in the gems available on this machine. Run `bundle install` to install missing gems. |
しかし上手く行かなかったので、手作業で「bundle install」するようにと言っています。
一旦 Ctrl+C で中止して、「bundle install」を実行します。
1 |
bundle install |
devise のインストールができたので、もう一度セットアップします。
1 |
rails generate rails_admin:install |
今度は上手くいくでしょうか。
1 |
? Where do you want to mount rails_admin? Press <enter> for [admin] > |
管理機能の URL (パス)を決めます。
ここではデフォルトの 「admin」のまま進みます。
1 2 |
gsub config/routes.rb route mount RailsAdmin::Engine => '/admin', :as => 'rails_admin' |
ルーティングに /admin 以下が RailsAdmin::Engine で処理する設定が追加されたようです。
1 |
? What would you like the user model to be called? Press <enter> for [user] > |
今度は管理機能のログインユーザを表すモデルを決めます。
デフォルトの「user」で進みます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
- Now setting up devise with user model name 'user': generate devise invoke active_record create db/migrate/20130117145100_devise_create_users.rb create app/models/user.rb invoke test_unit create test/unit/user_test.rb create test/fixtures/users.yml insert app/models/user.rb route devise_for :users - Now you'll need an initializer... create config/initializers/rails_admin.rb [RailsAdmin] Could not load model User, assuming model is non existing. (undefined method `devise' for User(Table doesn't exist):Class) - Adding a migration... create db/migrate/20130117145102_create_rails_admin_histories_table.rb - Job's done: migrate, start your server and visit '/admin'! |
マイグレーションがいくつか生成されているので、実行します。
1 |
rake db:migrate |
セットアップが完了しました。
テスト用のログインアカウントを作成する
rails console でテスト用のログインアカウントを作成します。
1 |
rails console |
User を作成します。
1 |
管理機能にログインする
rails server でサーバを起動し、 http://localhost:3000/admin/ にアクセスすると、ログイン画面が表示されます。
「translation missing: ja.devise.failure.user.unauthenticated」と表示されていますが、ロケールファイルに追加すれば良いので、ここでは気にしません。
テスト用に作成したアカウントでログインしましょう。
ダッシュボードが表示されます。
まずまず綺麗にまとまっていますね。
棒グラフの部分はアニメーションしながらニョキニョキ伸びました。
各モデルのページを表示すると、単純な CRUD ができるだけではなく、
- belongs_to での関連を設定したモデルへリンクされている
- 好きなカラムで検索できる
- データのエクスポート機能がある
など、機能が豊富です。
日本語化
ひとまず動くようになりましたが、日本語化ができていないので、対応します。
rails_admin の Wiki の Translations で、日本語ロケールファイルが紹介されていました。
- https://gist.github.com/1662352#file_rails_admin.ja.yml
上記ページからファイルをダウンロードし、config/locales/rails_admin.ja.yml として保存します。
サーバを再起動してもう一度画面を表示すると、メッセージ等が日本語で表示されるようになりました。
まとめ
rails_admin を使ってみて、機能は豊富であり、見た目のまずまず綺麗だなと感じました。
管理機能のユーザが自分だけ(もしくはごく限られた人だけ)であれば、rails_admin を入れるだけで十分という場合も多いかもしれません。
「管理機能を楽して作りたいけど、どのライブラリを使うか迷っている・・」という方は rails_admin を試してみてはいかがでしょうか。