RABLのDSLわからんヽ(Д´)ノ((
object`ってなに…)) ってなってるので、tilt-jbuilderをforkしてSinatraで動くようにした。
sinatra-integrationというブランチを切ったので、Gemfileに次のように記載するとSinatraでもJbuilderが使えるようになる。
# Gemfile gem "tilt-jbuilder", git: "git@github.com:a2ikm/tilt-jbuilder.git", require: "sinatra/jbuilder", branch: "sinatra-integration"
たとえばこんな感じ:
get "/" do jbuilder :foo # renders `views/foo.jbuilder` end get "/partial" do jbuildder "json.partial! :bar" # renders `views/_bar.jbuilder` end
RABLの部分テンプレートは遅いらしいんだけどこっちはどうなんだろう。evalしまくりなので遅い気はしている。
Pull Req.を投げてみたのでマージしてもらえるといいなぁ。
参考文献
ほかにも、
- Sinatra→Tilt→テンプレートエンジンの流れ: Sinatra::Base、Tilt::Template
- Sinatraでの部分テンプレートのパスの検索方法: RABL::Partials
- 変数の受け渡し方: いろいろ
などを参考にした。
Ruby難しい。
追記
ただ新しいバージョンがリリースされたわけではないので、今利用するには引き続きgithub上のリポジトリを指定する必要がある。
今になって思えば、gemspecでsinatraはdevelopment_dependencyに追加すべきだったなぁと思う。
追記
tilt-jbuilder 0.4.0がリリースされ、こちらに取り込まれた。
もうGemfileに:git
オプションを指定する必要はない。