2012年5月14日月曜日

sinatra (4) - テンプレートエンジン -

(3)の続き。
テンプレートエンジンを追加します。ErbHamlなど色々ありますが、今回はSlimを使用します。
.
├── config
├── config.ru
├── Gemfile
├── Gemfile.lock
├── Guardfile
├── lib
│     └── app.rb
├── public
├── spec
│     ├── app_spec.rb
│     └── spec_helper.rb
└── views
        └── index.slim  # 追加
        └── layout.slim  # 追加

Gemfile

source :rubygems

gem 'sinatra', require: 'sinatra/base'
gem 'slim'

group :development do
  gem 'sinatra-reloader', require: 'sinatra/reloader'
end

group :test do
  gem 'rspec'
  gem 'rack-test', require: 'rack/test'
  gem 'guard-rspec'
end

lib/app.rb

class MyApp < Sinatra::Base

  configure do
    set :root, File.expand_path('../../', __FILE__)
  end

  configure :development do
    Bundler.require :development
    register Sinatra::Reloader
  end

  get '/' do
    slim :index
  end
end

views/index.slim

h1 Hello World!
$ bundle install
$ bundle exec rackup
これで表示できますが、画面のソースを確認するとヘッダ等は記述されていません。
index.slimに直接追記してもよいですが、ここではlayout.slimとして分割します。

views/layout.slim

doctype html
html
  head
    title My App
  body == yield
展開されたhtmlのソースは圧縮されているので、インデント表示させたい時はオプションを変更しましょう。
  configure :development do
    # (略)
    Slim::Engine.set_default_options :pretty => true
  end

0 件のコメント:

コメントを投稿