LoginSignup
17
17

More than 5 years have passed since last update.

SinatraでのRABLの使い方

Last updated at Posted at 2012-10-25

RABLとは…

  • https://github.com/nesquena/rabl
  • jsonでのレスポンスを簡単に書くためのテンプレートエンジンみたいです。
  • ちょっとしたAPIサーバーをSinatraで作るときにRABLを併用することはありそう。

インストール

Gemfile
source :rubygems

gem 'sinatra'
gem 'rabl'
$ bundle install

基本

my_app.rb
class MyApp < Sinatra::Base
  Rabl.register!

  set :rabl, :format => :json

  get '/' do
    get :rabl, :home
  end
end
views/home.rabl
node(:greeting) do
  'Hello, Sinatra with RABL!'
end
$ curl http://myapp.dev
{"greeting":"Hello, Sinatra with RABL!"}

レイアウト

  • APIのレスポンスとしては、ステータスコードなどのメタ情報をすべてのレスポンスに共通して含めたい。
  • なので、Sinatraのテンプレートを使ってみる。
views/layout.erb
{
  "status": <%= response.status %>,
  "result": <%= yield %>
}
my_app.rb
get '/' do
  render :rabl, :home, :layout_engine => :erb
end
$ curl http://myapp.dev
{
  "status": 200,
  "result": {"greeting":"Hello, Sinatra with RABL!"}
}
  • RABLのwikiにあるように、ruby 1.9.xではRABLでレイアウトを書けないので、erbを使う。
  • レスポンス本体とレイアウトのエンジンが異なる場合は、:layout_engine => :erbと指定する必要があるっぽい。
17
17
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
17