Erubis を使ってみる
2008-11-20
ERB の高速な(?)テンプレートである Erubis を使ってみた。
インストール
sudo gem install erubis
サンプル
erubis の doc/user-guide.html を参考にする。
#!/usr/bin/env ruby
require 'rubygems'
require 'erubis'
include Erubis::XmlHelper
str = <<EOS
<div>
<%= '<b>test</b>' %>
<%=h '<b>test</b>' %>
</div>
EOS
puts Erubis::Eruby::new(str).result(binding)
実行するとこうなる。
<div>
<b>test</b>
<b>test</b>
</div>
分かったこと
- ERB の代わりに Erubis::Eruby を使う
- よりシンプルな実装の Erubis::TinyEruby もある
- ERB::Util の代わりに Erubis::XmlHelper を使う
tDiary に埋め込んでみる
ERB との 互換性を確かめるために tdiary.rb のライブラリ読み込み部分を以下のように書き換えてみる。
begin
require 'rubygems'
require 'erubis'
ERB = Erubis::Eruby
ERB::Util = Erubis::XmlHelper
rescue LoadError
begin
require 'erb_fast'
rescue LoadError
require 'erb'
end
end
そして実行…みごとにコンパイルエラー。
$ ruby index.rb
<pre>compile error
./tdiary.rb:1129: syntax error, unexpected '<'
<head>
^
./tdiary.rb:1131: syntax error, unexpected '<', expecting $end
</head>
^</pre>
うーん。変なところでHTMLエスケープされてるみたい。