Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
ActiveAdmin Better Practices@関西Ruby会議06
Search
KUROKI Shinsuke
July 11, 2015
Programming
410
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
ActiveAdmin Better Practices@関西Ruby会議06
KUROKI Shinsuke
July 11, 2015
More Decks by KUROKI Shinsuke
See All by KUROKI Shinsuke
冴えてるRailsエンジニアの育て方
skuroki
7
11k
伝わるコードレビューのために
skuroki
5
7.4k
進行中の開発プロジェクトで増えていくテストを自動で回し続けるために行ったいくつかのこと
skuroki
11
45k
Refactoring Ruby Edition in-house reading
skuroki
0
230
ActiveDecorator導入の話
skuroki
5
260k
Other Decks in Programming
See All in Programming
一参加者から『中の人』へ 〜全通PHPerがブースに立って学んだ、カンファレンスを100倍楽しむコツ〜
wp_daisuke
0
150
標準パッケージに uuid が追加された 背景から見る Go らしい意思決定 / go_127_uuid_decision
convto
5
7.1k
thread_parallel_with_free-threaded_Python_and_NumPy.pdf
riku_sakamoto
0
330
Snowflakeで業務アプリを作ろう。 Snowflakeのアプリ機能解説&実践ガイド
ayumu_yamaguchi
1
270
マイコン向けの軽量Ruby「PicoRuby」で各種デバイスを制御するネイティブアプリの実現手法
bash0c7
0
390
そのリトライ、死んだコネクションを使い回していませんか ── GoのHTTPクライアントとHTTP/2を実プロダクト障害から学び直す
myus4a
0
140
GraphRAGのKnowledge Graphを 直接!見る/View-GraphRAG's-KnowledgeGraph-directly!
tyumugi1113
1
320
AIエージェント時代のコードレビューを設計する
nogu66
6
2.7k
Vibes Containers 〜AIで変わるコンテナ設計と運用〜
tkikuc
3
550
XP祭りでしか伝わらないフリップネタ #xpjug
murabayashi
0
150
海上で動くGoサーバー: goroutineとchannelでさばく航行データストリーム
atsuki_seo
0
700
The Good Stuff, Not the Slop: Engineering High-Quality Android Apps with Modern AI Tooling
danybony
1
250
Featured
See All Featured
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
880
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.5k
Ten Tips & Tricks for a 🌱 transition
stuffmc
1
230
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
670
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.3k
Unsuck your backbone
ammeep
672
58k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
3k
Bash Introduction
62gerente
615
220k
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
660
Ruling the World: When Life Gets Gamed
codingconduct
0
330
Transcript
ActiveAdmin Better Practices 2015/07/11 株式会社Aiming 黒木慎介
自己紹介 • 株式会社Aimingのエンジニア(大阪web 開発チームのリーダー) • Railsなどを使ってオンラインゲーム運営 を助けるものをいろいろ作っています • Ruby/Rails歴5年 •
今年の5月から大阪スタジオに勤務してい ます
提供 Aimingは関西Ruby会議06に協賛しています!
目次 • ActiveAdmin概要 • TIPS初級編 • TIPS中級編 • TIPS上級編
ActiveAdmin概要 • 少ない記述量で定型的なCRUDの画面と処 理を実装できるgem – CRUD=データの登録・閲覧・更新 • 管理ツールを作るのに使ってます • 規模はかなりでかいです…
例えばこんなmodel
こういうのを書くと
こんなんとか
こんなんとか
こんなんができます
もうちょっと書くとこんな感じ
便利そうに見えるが… • 定型的なCRUD以外の処理をさせようとす るととたんにドはまりしたりする – 管理ツールの開発をしていると、定型的な CRUDでは満たせない要求が必ず出てくる – ActiveAdminで管理ツールを作る時には、い かにこのはまりを回避するかが重要になる
自分が感じるActiveAdminの問題点 • 使い始めにつまづきやすいところがある – 公式サイトが更新されていない – Rubygemsへのリリース頻度が低く、1.x系 は未だにpreのまま • コードをかなり読み込んで構造を理解し
ないと対処法がわからないことが結構あ る
まあいろいろありますが • 知っていれば回避できる問題もあるので、 それを知ってもらいたい、というのが今 日の発表の趣旨 • Bestとはいえない手段が必要なときもあ るけど、Betterな手段で不幸を回避して、 ProgrammingをEnjoyしましょう
TIPS初級編1 • ActiveAdminでググると、 activeadmin.infoという公式サイトっぽ いものがヒットする • しかし、これを読んではいけない
どういうこと? • ここでgithubのレポジトリを見てみま しょう • https://github.com/activeadmin/activ eadmin#documentation
None
どういうこと? • activeadmin.infoのドキュメントはあま り更新されていなくて、記述が古くなっ ているところが結構ある • Githubのレポジトリのdocs以下を見ま しょう
TIPS初級編2 • Rails4系に対応しているのは、1.x系だけ • しかし、1.x系はまだpreのバージョンし か出ていないので、バージョンの指定を しないと、0.x系のものを取ってきてしま う – 依存性を解決できなくてbundleがこける
Gemfileの書き方 • gem ‘activeadmin’ # NG • gem ‘activeadmin’, github:
‘activeadmin’ # OK • gem ‘activeadmin’, ‘~> 1.0.0.pre1’ #OK
TIPS中級編 • 定型的なCRUDではない処理をする場合の カスタマイズの仕方を知ろう
カスタマイズが必要なケース • 特定のmodelクラスのCRUDではない処理 を行う場合 • ModelクラスがActiveRecord::Baseの子 クラスではない場合 – CSV読むとか •
ActiveRecordを拡張するgemを使ってい て、CRUDのやり方が変わっている場合 – 複数DBとか
カスタマイズの代表的なやり方 • register_page(例を示します) • controller do … end • member_action
/ collection_action
register_pageの例
register_pageの例
register_pageの例
TIPS上級編 • ActiveAdminのページのレイアウトをい じるのは難しい • レイアウトのテンプレートファイルがど こかにあるわけではない • ActiveAdminのviewクラス(arbre)につい て理解しよう
arbre(あるぶる) • HTMLをDSLで書くためのgem • ActiveAdminの開発初期にview部分が抽 出されたもの • ActiveAdminのviewクラスは、arbreの拡 張として、複数定義されている •
ActiveAdminのviewは、これらのクラス を組み合わせて描画されている
None
None
例題 • データを表示するtableの中で active_decoratorで定義したメソッドを 使った表示を行いたい • 普通にやろうとすると、tableに渡す前段 階でdecorateを呼んであげる必要がある – コードがごちゃっとしがち
None
見た目をいじる流れ • カスタマイズしたい部分のHTMLのタグの idなどを確認する • bundle openからのgrepでみつける • モンキーパッチを書く
おさらい • ActiveAdmin概要 • TIPS初級編 – ドキュメントはGithubを見よう – Rails4なら1.0.0.pre1以上を使おう •
TIPS中級編 – カスタマイズのやり方を知ろう • TIPS上級編 – viewの構成を知ろう
他にも • あれやこれやあります – decoratorの使い方とか – 関連を含めたtableやfilterの書き方とか – メニューの並び順制御とか •
続きはQiitaで – http://qiita.com/skuroki@github – まだ書いてないネタもたくさんあります
おしまい • ありがとうございました • AimingはRailsエンジニアを募集しています! – Ruby/Rails未経験者採用実績あります • 勉強会会場提供もやってます –
グランフロント!駅近!便利!