続:テンプレートエンジンTenjinを使ってみる

Tenjin::ContextHelperを使ったら、いちいち値を渡さなくてよいのでちょっと便利。

main.rb:

require 'sinatra/base'
require 'tenjin'

class MyEngine < Tenjin::Engine

  def initialize(path, line, options)
    @template_path = path
    super({})
  end

  def render(app, locals, &block)
    super(@template_path, app)
  end
end

Tilt.register :rbhtml, MyEngine

class Main < Sinatra::Base
  include Tenjin::ContextHelper

  def bar
    'bar method'
  end

  get '/' do
    @ins_var = 'instance value'
    render(:rbhtml, :index, {}, self)
  end
end

実行結果:

hiro@neptune% cat views/index.rbhtml
@ins_var = #{@ins_var}
bar = #{bar}
hiro@neptune% cat config.ru
require './main'
run Main
hiro@neptune% thin start &
[1] 5296
hiro@neptune% >> Using rack adapter
>> Thin web server (v1.2.7 codename No Hup)
>> Maximum connections set to 1024
>> Listening on 0.0.0.0:3000, CTRL+C to stop

hiro@neptune% curl localhost:3000
@ins_var = instance value
bar = bar method