読者です 読者をやめる 読者になる 読者になる

Rails管理画面生成gem administrate を使ってみる

この手のものはrails_adminActive Adminなどが有名ですが、 DSLを覚える必要があったり色々癖があって選択が難しいです。
 
どれを選ぼうか迷っていたら、thoughtbot/administrate というものを見つけました。
 
paperclipfactory_girlなどで有名な thoughtbot社製で、DSL不要とのこと。
ちょっと使ってみたところ、なかなか使い勝手が良く気に入りました。
 

How to use it

コマンド一発で各種ファイルをadmin以下に生成してくれます。これでもう使えてしまいます。

$ rails generate administrate:install

新しいモデルを作成して途中で追加する場合は、以下を実行すれば良いです。

$ rails generate administrate:dashboard Foo

あとは config.routes にresourcesを追加するだけ。

Rails.application.routes.draw do
  namespace :admin do
    resources :players
    resources :foos
  end
end

こんな感じです。
関連テーブルもリンクが生成されますし、selectで表示したり、truncateしたりというのも可能です。
f:id:rochefort:20170508150929p:plain

Costomize

この辺りにまとまっています。 https://administrate-prototype.herokuapp.com

dashboard

dashboard というファイルに 項目の表示する型を定義し、画面ごとにどの項目を表示するかという設定がhash/arrayでできます。
ここで表示させたいものを表示させたい順に定義するだけで、画面の表示内容が変わります。非常に簡単で良いです。
デフォルトは項目が絞られているので、ここの修正は必須です。
 

custom field type

Gravatorのアイコンを表示させるみたいなのは、custom field type として作成しておけば、dashboardで指定するだけで使えます。
https://administrate-prototype.herokuapp.com/adding_custom_field_types

css/js

issueに記載がありました。
How to add custom CSS? · Issue #748 · thoughtbot/administrate

# config/initializers/administrate.rb
Administrate::Engine.add_stylesheet('your_stylesheet_name')

asset pipelineに乗せるなら、以下。

# config/initializers/assets.rb
Rails.application.config.assets.precompile += %w(your_stylesheet_name.css)

ちなみに

各種Gemのdownload数は、

$ gem-search -e rails_admin
Searching .
NAME                                                DL(ver)   DL(all) HOMEPAGE
-------------------------------------------------- -------- --------- ------------------------------------------------------------
rails_admin (1.1.1)                                   81127   1354125 https://github.com/sferik/rails_admin

$ gem-search -e activeadmin
Searching .
NAME                                                DL(ver)   DL(all) HOMEPAGE
-------------------------------------------------- -------- --------- ------------------------------------------------------------
activeadmin (1.0.0)                                    6073   2105976 http://activeadmin.info

$ gem-search -e typus
Searching .
NAME                                                DL(ver)   DL(all) HOMEPAGE
-------------------------------------------------- -------- --------- ------------------------------------------------------------
typus (3.1.10)                                        11001    152308 http://www.typuscmf.com/

$ gem-search -e administrate
Searching .
NAME                                                DL(ver)   DL(all) HOMEPAGE
-------------------------------------------------- -------- --------- ------------------------------------------------------------
administrate (0.6.0)                                    642    139972 https://administrate-prototype.herokuapp.com/

activeadmin 圧勝。