Ruby
Gem
RubyOnRails

プログラマーをダメにするという噂のgemで管理画面を作成してみた

今回は人をダメにする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がログイン認証で必要になってくるので一緒に記載します。

上に記載したdeviseactiveadminをインストールします。

$ 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をした際に用意されているので、以下を入力してログインしてください。

画面が無事に出ていることが確認できます。

管理データの追加

今回は対象のモデルが無い状態で始めているので、モデルを適当に作ってみます。

$ 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へ追加します。

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