とーますメモ

Ruby on Rails / Goなどの学習メモ

【Activeadmin超入門】インストール・環境設定 〜その1〜

Activeadminとは
要は「管理画面」系のRailsアプリをお手軽に作ることができるgem。

デザインは単調なものだが、決まったやり方に沿って作れば、
CRUD画面、検索フィルター、バッチ処理、CSV出力などの処理
また連携するgemを入れることでユーザ認証、権限管理などの処理も
かなり簡単に作成できる。

f:id:Thoames1212:20171222023033p:plain
Active Admin | The administration framework for Ruby on Rails

UIにはこだわらず、さくっと管理画面系のアプリを作りたい場合は
うってつけのgem。

この記事では、インストールして初期動作までの流れを説明。

Gemインストール


まず注意してほしいのがActiveadminの
ドキュメントのトップページどおりの
やり方でgemをインストールしても、次に続く初期処理でエラーがでることだ。

f:id:Thoames1212:20171221092900p:plain
ドキュメントのトップページ

rails generate active_admin:install

実行したコマンド

エラーを見ると以下のようにある。

`rescue in install_devise': To use devise you need to specify it in your Gemfile. If you don't want to use devise, run the generator with --skip-users. (ActiveAdmin::GeneratorError)

要はユーザ認証機能を導入するためのgemである"devise"をGemfile内に記入しろ!
もし使わないなら、「--skip-users」オプションをつけろ!と言っている。

だったら最初から、ドキュメントに書いとけよと思ったら、
違うページに書いてあった。
本当に紛らわしいから、同じ記述をドキュメントのトップにも書いてほしい。

ちなみにこの違うページには以下のようにgemをインストールするよう指示があるが

gem 'activeadmin'

# Plus integrations with:
gem 'devise'
gem 'cancan' # or cancancan
gem 'draper'
gem 'pundit'

以降で説明するdeviseが必要ないなら、最低限必要なのは"activeadmin"だけ。

以下のようなケースで、各gemが必要になるものと思われる。

1)ユーザ認証系処理(メール経由でのユーザ登録認証、パスワードリセットなど)を導入したい。

deviseを追加。

gem 'activeadmin'
gem 'devise'

deviseについては以下のサイトが分かりやすい。
qiita.com

2)権限管理(システム管理者、編集者、閲覧者など)を導入したい。

deviseとcancan(or cancancan)を追加。
※ユーザモデルが既に存在する場合はcancancanだけでも良いっぽい。

ちなみにcancanはプロジェクトの更新が止まっているらしく
それを引き継いでいるプロジェクトがcancancanだとのことなので、
自分はcancancanを使用する。ちなみにどちらも同じ記述で設定が可能っぽい。

gem 'activeadmin'
gem 'devise'
gem 'cancan'

cancancanについては以下のサイトが分かりやすい。
qiita.com
qiita.com

3)View内でロジックが複雑になる場合の対応をしたい

draperを追加。
View内でif文などロジックが複雑な場合且つHelperを使ったとしても
コードが複雑になる場合などに便利そう。

gem 'activeadmin'
gem 'draper'

draperについては以下のサイトが分かりやすい。
qiita.com

4)リソースに対しても権限管理したい!

punditを追加。
自分もよくわかってない。以下のサイトさんを参考にされたし。

gem 'activeadmin'
gem 'pundit'

punditについては以下のサイトが分かりやすい。
qiita.com

個人的な意見だと、大体の管理画面系アプリだったら
以下の設定でいい気がする。

gem 'activeadmin'

# Plus integrations with:
gem 'devise'
gem 'cancancan'

Activeadmin 初期設定

deviseをどう設定するかで、初期設定の方法が違う。

1)deviseを使う場合で、ユーザ管理のクラスを新規で作成する場合

$ bundle exec rails g active_admin:install

この場合、AdminUserモデルが生成され、このモデル用のマイグレーションファイルも生成される。

2)deviseを使う場合で、ユーザ管理のクラスが既に存在する場合は以下(例:Userクラスが存在する場合)

$ bundle exec rails g active_admin:install User

3)deviseを使わない場合

$ bundle exec rails g active_admin:install --skip-users

各場合に応じて、必要なファイルが生成される。
以降の説明は1)の新規でdeviseを使う場合の前提で進めていく。

マイグレーション

初期設定により、マイグレーションファイルが生成されているので
マイグレーションを行う。

$ bundle exec rake db:migrate

初期ユーザの設定(※deviseを使用する場合のみ)

初期設定により、seeds.rbファイルが生成されているので
そのデータをDBに流し込むだけ。

$ bundle exec rake db:seed

ログイン

ブラウザで以下にアクセス
http://localhost:3000/admin/

以下の情報でログインできる。

USER : admin@example.com
PW : password