Rails 管理画面作成 plug-in
        typus 解説
管理画面って何よ?



案件の管理をする側のみが閲覧、変更をする必
要があるデータを管理する機能をまとめた画面
しばしば、というか普通ユーザーの見えている
画面に劣らない数の画面数になる
管理画面に求められる機能
●   データの検索、閲覧、作成、修正、削除等
●   管理をする必要がある種類のデータの数だけ
    これを作る。正直テンプレ作業で結構面倒く
    さい
●   開発開始時に早めに作っておくと、テスト
    データの作成等でも力を発揮する
●
問題点
●   案件のリリース後、営業サイドから、度々カ
    スタマイズを求められるようになる
●   機能を共通化しすぎると後で困る
管理画面開発の経験則
単純な機能は案件初期からパパっと作れてあ
とでカスタマイズがきちんと出来る
これが管理画面系の plug-in としての理想形
だ
とくに入力フォーム、検索フォームに関して
はどんな要望にも答えられないといけない
管理画面系 plug-in
●   代表的な管理画面系 plug-in 3つ上げてみた
●   active_admin
●   rails_admin
●   typus

●   今回は typus を選んだ理由と使い方の紹介
typus の使い方
●   あまり長い解説はしないのですが
●   「 rails g typus 」で必要なファイルを生成
●   テーブルの情報を読み取って yml ファイルを
    書き出す
表示、編集項目のカスタマイズ
   ●   「 config/typus/ 」以下に作成された YAML
       ファイルを編集すれば表示項目を変えられる
Restaurant:              index アクションで表示したい項目
 fields:
   default: name, image, public, address, phone_number
   form: name, image, public, distinct_id, food_genre_id, address,
phone_number, comment
 relationships: menus
 application: Application    New,edit アクションで編集したい項目


 基本、 deefault や form の項目にあるカラムを編集するだけ
フォームの形式の編集
●   typus デフォルトの view をオーバーライドす
    る
●   「 (typus の gem のあるディレクト
    リ )/app/views/admin/resources 」にある
    「 _form.html.erb 」ファイルをコピー
    編集すると見た目が変わる
さらにカスタマイズ
●   /app/views/admin/resources に
●   index.html.erb
●   new.html.erb
●   edit.html.erb
●   ここらへんを編集
typus の利点
    コードを追いかけていくと
●   helper 関数→ partial→helper 関数→ partial の構
    造が徹底されてる
    partial で呼び出しているファイルをオーバー
    ライドすることで必ずカスタマイズ可能
機能の変更
●    システム管理者には全ユーザー情報の閲覧権限があるけ
     ど、一般の管理者には権限に応じた範囲しか見せないとき
●    Action の機能を上書き可能なので
●    「 app/admin/(table 名 )_controller.rb 」を編集

class HogeController < Admin::ResourceController
    def index
     super
     if admin_user.role!="admin"
       @items = @items.where( " priority < 3 " )
     end
    end
end
ログイン機能だけ借りたい
●   typus の Admin::BaseController を継承すれば
    良いだけです!
●   rails g controller hoge
●   vi で
●   class HogeController < ApplicationController
●                       ↓
●   class HogeController < Admin::BaseController
デザインの編集
●   小さい機能変更だけなら標準で上書き用の
    シートの隙間が用意されています
●   「 app/assets/stylesheets/typus/cuctom.css 」を
    作成して、そこに上書き用のデザインを書け
    ばいいだけ
●
やっておいた方がいい事
●   国際化がまだ不十分で、日本語にするとおか
    しな箇所が出る
●
対応言語の追加
ユーザーの使用言語に日本語を追加する
(rails のルートディレクトリ以下 )lib/typus.rb とかを作って、
以下のコードをコピペ

# encoding: utf-8
module Typus
 module I18n
   class<< self
    alias :old_available_locales :available_locales
    def available_locales
      self.old_available_locales.merge( " 日本語 " => "ja")
    end
   end
 end
end
モデル名の複数形化防止
●   日本語に翻訳しても無理やり複数形に変えるところがある
    ので view で「ユーザー s 」とか「アイテム s 」とか表示さ
    れる
●   /app/views/admin/resources を app/views にコピーして view
    ファイルの pluralize メソッドを grep で見つけて削っておく
typus の欠点
●   テーブルの変更にすごく弱い(特にカラム名
    変更と、カラム削除)ここは最悪
    (railg g typus コマンドにモデル名指定のオプションが欲しい所 )

    config/typus/ テーブル名 .yml を再編集、また
    は生成しないといけない
●   mongodb だと管理機能自動生成できない(あ
    る意味当たり前)
結論
●   Typus の最大の利点はカスタマイズ方法の幅
    広さと簡潔さ
●   最大の欠点は migration に弱い、代表的な
    gem 3つでダントツで弱い(はず…)
ありがとうございました

rails 管理画面作成gem Typus解説