rails 管理画面作成gem Typus解説

5,441 views

Published on

railsの管理画面生成gemはいくつかありますがインストールまでの解説ばかりで、
実際に案件に組み込んで使用したとき移行の解説が無かったので、社内勉強会を機会にちょっとまとめてみました 

Published in: Technology
3 Comments
6 Likes
Statistics
Notes
No Downloads
Views
Total views
5,441
On SlideShare
0
From Embeds
0
Number of Embeds
52
Actions
Shares
0
Downloads
2
Comments
3
Likes
6
Embeds 0
No embeds

No notes for slide

rails 管理画面作成gem Typus解説

  1. 1. Rails 管理画面作成 plug-in typus 解説
  2. 2. 管理画面って何よ?案件の管理をする側のみが閲覧、変更をする必要があるデータを管理する機能をまとめた画面しばしば、というか普通ユーザーの見えている画面に劣らない数の画面数になる
  3. 3. 管理画面に求められる機能● データの検索、閲覧、作成、修正、削除等● 管理をする必要がある種類のデータの数だけ これを作る。正直テンプレ作業で結構面倒く さい● 開発開始時に早めに作っておくと、テスト データの作成等でも力を発揮する●
  4. 4. 問題点● 案件のリリース後、営業サイドから、度々カ スタマイズを求められるようになる● 機能を共通化しすぎると後で困る
  5. 5. 管理画面開発の経験則単純な機能は案件初期からパパっと作れてあとでカスタマイズがきちんと出来るこれが管理画面系の plug-in としての理想形だとくに入力フォーム、検索フォームに関してはどんな要望にも答えられないといけない
  6. 6. 管理画面系 plug-in● 代表的な管理画面系 plug-in 3つ上げてみた● active_admin● rails_admin● typus● 今回は typus を選んだ理由と使い方の紹介
  7. 7. typus の使い方● あまり長い解説はしないのですが● 「 rails g typus 」で必要なファイルを生成● テーブルの情報を読み取って yml ファイルを 書き出す
  8. 8. 表示、編集項目のカスタマイズ ● 「 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 の項目にあるカラムを編集するだけ
  9. 9. フォームの形式の編集● typus デフォルトの view をオーバーライドす る● 「 (typus の gem のあるディレクト リ )/app/views/admin/resources 」にある 「 _form.html.erb 」ファイルをコピー 編集すると見た目が変わる
  10. 10. さらにカスタマイズ● /app/views/admin/resources に● index.html.erb● new.html.erb● edit.html.erb● ここらへんを編集
  11. 11. typus の利点 コードを追いかけていくと● helper 関数→ partial→helper 関数→ partial の構 造が徹底されてる partial で呼び出しているファイルをオーバー ライドすることで必ずカスタマイズ可能
  12. 12. 機能の変更● システム管理者には全ユーザー情報の閲覧権限があるけ ど、一般の管理者には権限に応じた範囲しか見せないとき● Action の機能を上書き可能なので● 「 app/admin/(table 名 )_controller.rb 」を編集class HogeController < Admin::ResourceController def index super if admin_user.role!="admin" @items = @items.where( " priority < 3 " ) end endend
  13. 13. ログイン機能だけ借りたい● typus の Admin::BaseController を継承すれば 良いだけです!● rails g controller hoge● vi で● class HogeController < ApplicationController● ↓● class HogeController < Admin::BaseController
  14. 14. デザインの編集● 小さい機能変更だけなら標準で上書き用の シートの隙間が用意されています● 「 app/assets/stylesheets/typus/cuctom.css 」を 作成して、そこに上書き用のデザインを書け ばいいだけ●
  15. 15. やっておいた方がいい事● 国際化がまだ不十分で、日本語にするとおか しな箇所が出る●
  16. 16. 対応言語の追加ユーザーの使用言語に日本語を追加する(rails のルートディレクトリ以下 )lib/typus.rb とかを作って、以下のコードをコピペ# encoding: utf-8module Typus module I18n class<< self alias :old_available_locales :available_locales def available_locales self.old_available_locales.merge( " 日本語 " => "ja") end end endend
  17. 17. モデル名の複数形化防止● 日本語に翻訳しても無理やり複数形に変えるところがある ので view で「ユーザー s 」とか「アイテム s 」とか表示さ れる● /app/views/admin/resources を app/views にコピーして view ファイルの pluralize メソッドを grep で見つけて削っておく
  18. 18. typus の欠点● テーブルの変更にすごく弱い(特にカラム名 変更と、カラム削除)ここは最悪 (railg g typus コマンドにモデル名指定のオプションが欲しい所 ) config/typus/ テーブル名 .yml を再編集、また は生成しないといけない● mongodb だと管理機能自動生成できない(あ る意味当たり前)
  19. 19. 結論● Typus の最大の利点はカスタマイズ方法の幅 広さと簡潔さ● 最大の欠点は migration に弱い、代表的な gem 3つでダントツで弱い(はず…)
  20. 20. ありがとうございました

×