rablについてざっくりだけ調べてみた #shinjukurb 新宿rb 41th

11
© 2015 Actcat, Inc. 1 rabl ににににににににに にに .rb 41th

Transcript of rablについてざっくりだけ調べてみた #shinjukurb 新宿rb 41th

Page 1: rablについてざっくりだけ調べてみた #shinjukurb 新宿rb 41th

© 2015 Actcat, Inc. 1

rablについて調べてみた

新宿 .rb 41th

Page 2: rablについてざっくりだけ調べてみた #shinjukurb 新宿rb 41th

© 2015 Actcat, Inc. 2

@sumyapp

Koichiro Sumi

コードレビューのための CI サービス、SideCI を運営

最近はマーケの人と化していますコードは他のメンバーが書いています

Page 3: rablについてざっくりだけ調べてみた #shinjukurb 新宿rb 41th

© 2015 Actcat, Inc. 3

SideCIとは

GitHub 連携の自動コードレビュー SaaSRuboCop など Lint ツールを約 20 ほど提供独自解析エンジンもこそっと提供開始中

https://github.com/integrations

Page 4: rablについてざっくりだけ調べてみた #shinjukurb 新宿rb 41th

© 2015 Actcat, Inc. 4

アジェンダ

rabl って何?使ったことある、使っている人いる?僕はこういうときに rabl を使いたい

Page 5: rablについてざっくりだけ調べてみた #shinjukurb 新宿rb 41th

© 2015 Actcat, Inc. 5

rabl

スターがすっごい沢山ついている

Page 6: rablについてざっくりだけ調べてみた #shinjukurb 新宿rb 41th

© 2015 Actcat, Inc. 6

What is rabl?

RABL (Ruby API Builder Language) is a Rails and Padrino ruby templating system for generating JSON, XML, MessagePack, PList and BSON. When using the ActiveRecord 'to_json' method, I find myself wanting a more expressive and powerful solution for generating APIs. This is especially true when the JSON representation is complex or doesn't match the exact schema defined within the database.オブジェクトをレスポンスする、

API 専用のテンプレートエンジン

Page 7: rablについてざっくりだけ調べてみた #shinjukurb 新宿rb 41th

© 2015 Actcat, Inc. 7

お題

Q. 「 rabl を使ったことが ある人はいますか?」A.A. 使っているB. 使ったことがあるC. 名前を聞いたことがあるD. 初めて聞いた

Page 8: rablについてざっくりだけ調べてみた #shinjukurb 新宿rb 41th

© 2015 Actcat, Inc. 8

簡単な使い方

.rabl ファイルに `object @name` を書くだけ

Page 9: rablについてざっくりだけ調べてみた #shinjukurb 新宿rb 41th

© 2015 Actcat, Inc. 9

詳細は READMEで

普通の view で出来ることはたいてい出来るパーシャル条件分岐による JSON への key の有無

キャッシュも Rails 機構でaction_controller.perform_caching

https://github.com/nesquena/rabl/blob/master/README.md

Page 10: rablについてざっくりだけ調べてみた #shinjukurb 新宿rb 41th

© 2015 Actcat, Inc. 10

Controller直レンダリングから rablへPure Rails controller Controller クラスで

JSON を組み立て、 render :json でレンダリング API の返り値は

controller が管理 View dir を見ても空

rabl Controller ではインスタンスの作成のみ、

rabl でレンダリング API の返り値は rablファイルで管理 View dir に API の値も普通の view もある

Page 11: rablについてざっくりだけ調べてみた #shinjukurb 新宿rb 41th

© 2015 Actcat, Inc. 11

僕はこういうときに rablを使いたい

オブジェクトを複数組み合わせたオブジェクトを API の返り値とするとき1 つの to_json だけでは解決しないとき

API を View として管理したいとき`render :json` と書くより、 users.html.slim

users.json.rabl を view の dir に置きたい to_json より非常に柔軟でシンプルなので、とりあえず使っておきたい