×
Copy
Open
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
ActiveAdmin Better Practices 2015/07/11 株式会社Aiming 黒木慎介
Slide 2
Slide 2 text
自己紹介 • 株式会社Aimingのエンジニア(大阪web 開発チームのリーダー) • Railsなどを使ってオンラインゲーム運営 を助けるものをいろいろ作っています • Ruby/Rails歴5年 • 今年の5月から大阪スタジオに勤務してい ます
Slide 3
Slide 3 text
提供 Aimingは関西Ruby会議06に協賛しています!
Slide 4
Slide 4 text
目次 • ActiveAdmin概要 • TIPS初級編 • TIPS中級編 • TIPS上級編
Slide 5
Slide 5 text
ActiveAdmin概要 • 少ない記述量で定型的なCRUDの画面と処 理を実装できるgem – CRUD=データの登録・閲覧・更新 • 管理ツールを作るのに使ってます • 規模はかなりでかいです…
Slide 6
Slide 6 text
例えばこんなmodel
Slide 7
Slide 7 text
こういうのを書くと
Slide 8
Slide 8 text
こんなんとか
Slide 9
Slide 9 text
こんなんとか
Slide 10
Slide 10 text
こんなんができます
Slide 11
Slide 11 text
もうちょっと書くとこんな感じ
Slide 12
Slide 12 text
便利そうに見えるが… • 定型的なCRUD以外の処理をさせようとす るととたんにドはまりしたりする – 管理ツールの開発をしていると、定型的な CRUDでは満たせない要求が必ず出てくる – ActiveAdminで管理ツールを作る時には、い かにこのはまりを回避するかが重要になる
Slide 13
Slide 13 text
自分が感じるActiveAdminの問題点 • 使い始めにつまづきやすいところがある – 公式サイトが更新されていない – Rubygemsへのリリース頻度が低く、1.x系 は未だにpreのまま • コードをかなり読み込んで構造を理解し ないと対処法がわからないことが結構あ る
Slide 14
Slide 14 text
まあいろいろありますが • 知っていれば回避できる問題もあるので、 それを知ってもらいたい、というのが今 日の発表の趣旨 • Bestとはいえない手段が必要なときもあ るけど、Betterな手段で不幸を回避して、 ProgrammingをEnjoyしましょう
Slide 15
Slide 15 text
TIPS初級編1 • ActiveAdminでググると、 activeadmin.infoという公式サイトっぽ いものがヒットする • しかし、これを読んではいけない
Slide 16
Slide 16 text
どういうこと? • ここでgithubのレポジトリを見てみま しょう • https://github.com/activeadmin/activ eadmin#documentation
Slide 17
Slide 17 text
No content
Slide 18
Slide 18 text
どういうこと? • activeadmin.infoのドキュメントはあま り更新されていなくて、記述が古くなっ ているところが結構ある • Githubのレポジトリのdocs以下を見ま しょう
Slide 19
Slide 19 text
TIPS初級編2 • Rails4系に対応しているのは、1.x系だけ • しかし、1.x系はまだpreのバージョンし か出ていないので、バージョンの指定を しないと、0.x系のものを取ってきてしま う – 依存性を解決できなくてbundleがこける
Slide 20
Slide 20 text
Gemfileの書き方 • gem ‘activeadmin’ # NG • gem ‘activeadmin’, github: ‘activeadmin’ # OK • gem ‘activeadmin’, ‘~> 1.0.0.pre1’ #OK
Slide 21
Slide 21 text
TIPS中級編 • 定型的なCRUDではない処理をする場合の カスタマイズの仕方を知ろう
Slide 22
Slide 22 text
カスタマイズが必要なケース • 特定のmodelクラスのCRUDではない処理 を行う場合 • ModelクラスがActiveRecord::Baseの子 クラスではない場合 – CSV読むとか • ActiveRecordを拡張するgemを使ってい て、CRUDのやり方が変わっている場合 – 複数DBとか
Slide 23
Slide 23 text
カスタマイズの代表的なやり方 • register_page(例を示します) • controller do … end • member_action / collection_action
Slide 24
Slide 24 text
register_pageの例
Slide 25
Slide 25 text
register_pageの例
Slide 26
Slide 26 text
register_pageの例
Slide 27
Slide 27 text
TIPS上級編 • ActiveAdminのページのレイアウトをい じるのは難しい • レイアウトのテンプレートファイルがど こかにあるわけではない • ActiveAdminのviewクラス(arbre)につい て理解しよう
Slide 28
Slide 28 text
arbre(あるぶる) • HTMLをDSLで書くためのgem • ActiveAdminの開発初期にview部分が抽 出されたもの • ActiveAdminのviewクラスは、arbreの拡 張として、複数定義されている • ActiveAdminのviewは、これらのクラス を組み合わせて描画されている
Slide 29
Slide 29 text
No content
Slide 30
Slide 30 text
No content
Slide 31
Slide 31 text
例題 • データを表示するtableの中で active_decoratorで定義したメソッドを 使った表示を行いたい • 普通にやろうとすると、tableに渡す前段 階でdecorateを呼んであげる必要がある – コードがごちゃっとしがち
Slide 32
Slide 32 text
No content
Slide 33
Slide 33 text
見た目をいじる流れ • カスタマイズしたい部分のHTMLのタグの idなどを確認する • bundle openからのgrepでみつける • モンキーパッチを書く
Slide 34
Slide 34 text
おさらい • ActiveAdmin概要 • TIPS初級編 – ドキュメントはGithubを見よう – Rails4なら1.0.0.pre1以上を使おう • TIPS中級編 – カスタマイズのやり方を知ろう • TIPS上級編 – viewの構成を知ろう
Slide 35
Slide 35 text
他にも • あれやこれやあります – decoratorの使い方とか – 関連を含めたtableやfilterの書き方とか – メニューの並び順制御とか • 続きはQiitaで – http://qiita.com/skuroki@github – まだ書いてないネタもたくさんあります
Slide 36
Slide 36 text
おしまい • ありがとうございました • AimingはRailsエンジニアを募集しています! – Ruby/Rails未経験者採用実績あります • 勉強会会場提供もやってます – グランフロント!駅近!便利!