Ruby on Railsで、"Active Admin"を使うと簡単にアプリケーションの管理インタフェースを作成できます。Active Adminの概要とインストール方法をまとめました。
(1)概要
・管理インタフェースを構築するフレームワーク。
・データの管理が出来、カスタマイズも可能。
・一般的なビジネスアプリケーションパターンに対応。
●特徴
・スコープ
スコープを使ってセクションを作ることが出来る。
・インデックススタイル
テーブルビュー、グリッドビュー、ブロックビュー、ブログビューをサポート
・ユーザー認証
組込み機能または用意されたフックを使って自作の認証機能も使用できる。
・DSLを使って管理インタフェースのカスタマイズが出来る。
(2)インストール手順
下記サイトを参考にし、インストールしてみました。
http://www.sitepoint.com/easy-admin-interfaces-active-admin-rails/
1)デモ用のモデル作成
rails g model Genre name:string
rails g model Author first_name:string last_name:string
rails g model Book name:string price:decimal author:references genre:references
rake db:migrate
2)デモ用のモデル間にアソシエーション定義
app/models/genre.rb
app/models/genre.rb
app/models/author.rb
has_many :books
app/models/book.rb
belongs_to :author
belongs_to :genre
3)Active Adminのバンドルインストール
$ vi Gemfile
gem ‘activeadmin’, github: ‘gregbell/active_admin’
$ bundle install
: Installing arbre (1.0.1) : Installing bourbon (3.1.8) : Installing bcrypt (3.1.7) Installing orm_adapter (0.5.0) Installing warden (1.2.3) Installing devise (3.2.4) Installing formtastic (2.3.0.rc2) Installing has_scope (0.6.0.rc) Installing responders (1.0.0) Installing inherited_resources (1.4.1) : Installing jquery-ui-rails (4.2.0) Installing kaminari (0.15.1) : Installing polyamorous (0.6.4) Installing ransack (1.1.0) : Using activeadmin (1.0.0.pre) from git://github.com/gregbell/active_admin.git (at master) :
4)Active Adminのインストール
下記を実行するとAdminUserモデルの作成、設定、認証用にDeviseを設定してくれます。
$ rails g active_admin:install
invoke devise generate devise:install create config/initializers/devise.rb create config/locales/devise.en.yml =============================================================================== Some setup you must do manually if you haven't yet: 1. Ensure you have defined default url options in your environments files. Here is an example of default_url_options appropriate for a development environment in config/environments/development.rb: config.action_mailer.default_url_options = { host: 'localhost:3000' } In production, :host should be set to the actual host of your application. 2. Ensure you have defined root_url to *something* in your config/routes.rb. For example: root to: "home#index" 3. Ensure you have flash messages in app/views/layouts/application.html.erb. For example: <p class="notice"><%= notice %></p> <p class="alert"><%= alert %></p> 4. If you are deploying on Heroku with Rails 3.2 only, you may want to set: config.assets.initialize_on_precompile = false On config/application.rb forcing your application to not access the DB or load models when precompiling your assets. 5. You can copy Devise views (for customization) to your app by running: rails g devise:views =============================================================================== invoke active_record create db/migrate/20140402064726_devise_create_admin_users.rb create app/models/admin_user.rb invoke test_unit create test/models/admin_user_test.rb create test/fixtures/admin_users.yml insert app/models/admin_user.rb route devise_for :admin_users gsub app/models/admin_user.rb gsub config/routes.rb insert db/migrate/20140402064726_devise_create_admin_users.rb create config/initializers/active_admin.rb create app/admin create app/admin/dashboard.rb create app/admin/admin_user.rb insert config/routes.rb generate active_admin:assets create app/assets/javascripts/active_admin.js.coffee create app/assets/stylesheets/active_admin.css.scss create db/migrate/20140402064728_create_active_admin_comments.rb
5)マイグレーション実行
$ rake db:migrate
== DeviseCreateAdminUsers: migrating ========================================= -- create_table(:admin_users) -> 0.0551s -- add_index(:admin_users, :email, {:unique=>true}) -> 0.0007s -- add_index(:admin_users, :reset_password_token, {:unique=>true}) -> 0.0007s == DeviseCreateAdminUsers: migrated (0.0567s) ================================ == CreateActiveAdminComments: migrating ====================================== -- create_table(:active_admin_comments) -> 0.0011s -- add_index(:active_admin_comments, [:namespace]) -> 0.0005s -- add_index(:active_admin_comments, [:author_type, :author_id]) -> 0.0005s -- add_index(:active_admin_comments, [:resource_type, :resource_id]) -> 0.0007s == CreateActiveAdminComments: migrated (0.0032s) =============================
6)動作確認
①Webサーバー起動
②ブラウザからアクセス
http://localhost:3000/admin
③下記初期ユーザーでログイン
Username: admin@example.com
Password: password