Step by Step Ruby on Rails

Ruby on Railsで実際にWebサイトを構築する手順をまとめています。

Active Adminのインストール方法

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