今回は人をダメにするgem、ActiveAdminを使って素早く、そして、イケてる管理画面を作成していきたいと思います。
ActiveAdminとは
ググってしまえば一発で出てくると思いますが、簡単に説明をしていきます。
管理画面系gemには大きく三つ挙げることができます。
- rails_admin
- active_admin
- typus
この三つの中でも、ActiveAdminは非常にバランスのとれたイケてるgemです(自分視点)
イケてるCRUD管理画面を一瞬で作成してくれます。
社内ツール向けで運用していくならこのgemがベストだと思います。
ただ、普通のRailsの書式と違うDSL(ドメイン固有言語)で記述しないといけないので、その学習コストがかかります。
その学習コストもそれほど高くないんですけどね!
動作環境
- OSX EI Capitan 10.11.6
- Ruby 2.3.4
- Rails 5.1.1
- MySQL 5.7.17
- ActiveAdmin 1.0.0
- devise 4.3.0
Railsへの導入準備
今回はadmin
というアプリケーションを用意し、そこにActiveAdminを導入します。
初期ではSQLiteが入っていますが、MySQLに変更しているという前提条件のもと行っていきます。
ActiveAdminのドキュメントを参考にして進めていきます(https://activeadmin.info/0-installation.html)
Gemfile
へ以下を追加。
・
・
・
gem 'activeadmin', github: 'gregbell/active_admin'
gem 'devise'
・
・
・
devise
というgemがログイン認証で必要になってくるので一緒に記載します。
上に記載したdevise
とactiveadmin
をインストールします。
$ bundle install --path vendor/bundle
※今回はvendor/bundle
配下にgemを配置しています。適宜変えるようにしてください。
adminアプリへ導入
ドキュメント通り以下を実行してactiveadmin
を入れていきます。
環境はdevelopment
を指定します。
$ bundle exec rails g active_admin:install
$ ./bin/rails db:migrate RAILS_ENV=development
$ ./bin/rails db:seed RAILS_ENV=development
$ bundle exec rails s -e development
rails g active_admin:install
を行った際にAdminUserモデルが作成されます。
既存のモデルを使用したい場合はrails g active_admin:install --skip-users
で作成しないようにすることも可能です。
その際はconfig/initializers/active_admin.rb
で設定を変更する必要があるので、注意してください。
画面の確認
http://localhost:3000/admin
へアクセス。
初期のユーザー名とパスワードは./bin/rake db:seed RAILS_ENV=development
をした際に用意されているので、以下を入力してログインしてください。
- Email: admin@example.com
- Password: password
画面が無事に出ていることが確認できます。
管理データの追加
今回は対象のモデルが無い状態で始めているので、モデルを適当に作ってみます。
$ rails g model Book title:string content:text
$ ./bin/rails db:migrate RAILS_ENV=development
次に作ったモデルを管理対象にします。
$ rails g active_admin:resource Book
同じように画面を確認するとメニューへBooksが追加されます。
ここで登録許可を行うコードをapp/admin/book.rb
へ追加します。
ActiveAdmin.register Book do
# See permitted parameters documentation:
# https://github.com/activeadmin/activeadmin/blob/master/docs/2-resource-customization.md#setting-up-strong-parameters
#
# permit_params :list, :of, :attributes, :on, :model
#
# or
#
# permit_params do
# permitted = [:permitted, :attributes]
# permitted << :other if params[:action] == 'create' && current_user.admin?
# permitted
# end
permit_params :title, :content
end
実際に登録ができるかどうか確認してみてください。
まとめ
以外と簡単に追加することができますよね!
次回は少し機能を追加して扱いやすいようにしてみたいと思います。
ではでは。
続:プログラマーをダメにした管理画面を改良していく その1
https://qiita.com/motty93/items/743710210580f6c1080a