Ramazeさんで Tenjin を使えるようにするパッチ

Tenjin と言えばそうそれはもう激速という噂のテンプレートエンジンです。Erubisの作者さんがつくったんですよね。やっぱり速いのって大切!

http://www.kuwata-lab.com/tenjin/

というわけで、TenjinをRamazeさんで使えるようにするパッチを投げました。RedCloth入れてもらったばかりだから気が引けるところではありますが、まだいくつか追加したいと思っておりますので皆様しばし御辛抱下さい。

Add the Tenjin templating engine

使い方は次のような感じになります。

class MyController < Ramaze::Controller
  engine :Tenjin

  def internal
    # @context に Hash か Tenjin::Context を仕込んでおいて下さい
    @context = {
      :hello => "world"
    }
    '<div>#{@hello}</div>' # => <div>world</div>
  end

  # "external.tenjin" という名前のファイルをテンプレートとして使用します。
  def external
    @context = { :hoge => :hage }
  end
end

みたいな。なお、実装に関する注意点。Tenjin::EngineではなくTenjin::Templateを使っております。というのもTenjin::Engineの仕事のいくつかはRamazeさんとかぶってしまうからです。例えばキャッシュとかレイアウトとか。そういうわけでTenjin::Templateを選択したのですが、これだとひょっとして激速というワケにはいかないのでしょうか。こればかりは実際に測定してみないと分からないような気がします。いずれなんとかして比較してみたいと思います。

そのようなわけでよろしくお願い致します。

追記

多分コア開発者であろうと思われる Jonathan Buch さんはTenjinに大層興味を抱いて下さった模様。

Tenjin really looks interesting, I'm considering to use it instead of Ezamar allready...

http://rubyforge.org/pipermail/ramaze-general/2008-January/000145.html

でも実際速いのかは測ってみないと分かんないよー。とは言えTenjinは速いという分かり易いウリ文句以外にも、<?rb ... ?> と #{...} と ${...} の三種類の埋め込み形式が用意されていたり、段落のcapture機能があったりと、ERBに比べたら色々便利なので、どうしても微妙感漂うと言わざる得ないEzamarよりは良いかも知れません。