: O. Yuanying

ERB on JRuby

JRuby0.8.3にてRuby on Railsが一部対応したとのことで、たぶんERBもJRubyで動くようになったんだろうなあと思い試してみました。

結論は、JRuby上でERBは動く!

とりあえずEclipse上でBSFを利用して以下のスクリプトを実行してみました。プロジェクトの構成はこんな感じでした。

test.rb

$:.unshift "./lib"

puts "test"

require 'erb'
str = 'My number is <%= bar %>.'
bar = 1986
puts ERB.new(str).result(binding)

BsfTest.java

package jp.fraction.test;

import java.io.IOException;

import org.apache.bsf.BSFException;
import org.apache.bsf.BSFManager;
import org.apache.commons.io.IOUtils;

public class BsfTest {

    /**
     * @param args
     * @throws BSFException
     * @throws IOException
     */
    public static void main(String[] args) throws BSFException, IOException {
        BSFManager manager = new BSFManager();

        // スクリプトの実行。
        manager.exec("ruby", "(java)", 1, 1, IOUtils.toString(BsfTest.class
                .getResourceAsStream("/test.rb")));
    }

}

これでJava上のテンプレートエンジンの選択肢がVelocityやFreeMakerに加えてさらに一つ増えた訳でめでたいことですw