おまけ: Erubis のベンチマークテストを Ruby1.9 で実行するためのパッチ
Erubis の benchmark/bench.r を Ruby1.9 で実行するためには、以下のパッチが必要。
Index: benchmark/bench.rb =================================================================== --- benchmark/bench.rb (revision 96) +++ benchmark/bench.rb (working copy) @@ -93,7 +93,8 @@ def execute_eruby(filename, context) return unless ERuby - eval context2code(context) + #eval context2code(context) + list = context['list'] @ntimes.times do ERuby.import(filename) end @@ -101,7 +102,8 @@ end def execute_erb(filename, context) - eval context2code(context) + #eval context2code(context) + list = context['list'] output = nil @ntimes.times do eruby = ERB.new(File.read(filename)) @@ -112,7 +114,8 @@ end def execute_erb_cached(filename, context) - eval context2code(context) + #eval context2code(context) + list = context['list'] output = nil cachefile = filename + '.cache' File.unlink(cachefile) if test(?f, cachefile) @@ -135,7 +138,8 @@ for klass in %w[Eruby FastEruby TinyEruby ArrayBufferEruby PrintOutEruby StdoutEruby] do s = <<-END def execute_erubis_#{klass.downcase}(filename, context) - eval context2code(context) + #eval context2code(context) + list = context['list'] output = nil @ntimes.times do eruby = Erubis::#{klass}.new(File.read(filename)) @@ -152,7 +156,8 @@ for klass in %w[Eruby FastEruby] do s = <<-END def execute_erubis_#{klass.downcase}_cached(filename, context) - eval context2code(context) + #eval context2code(context) + list = context['list'] cachefile = filename + '.cache' File.unlink(cachefile) if test(?f, cachefile) output = nil @@ -173,7 +178,8 @@ def convert_eruby(filename, context) return unless ERuby - eval context2code(context) + #eval context2code(context) + list = context['list'] output = nil @ntimes.times do output = ERuby::Compiler.new.compile_string(File.read(filename)) @@ -182,7 +188,8 @@ end def convert_erb(filename, context) - eval context2code(context) + #eval context2code(context) + list = context['list'] output = nil @ntimes.times do eruby = ERB.new(File.read(filename)) @@ -194,7 +201,8 @@ for klass in %w[Eruby FastEruby TinyEruby] s = <<-END def convert_erubis_#{klass.downcase}(filename, context) - eval context2code(context) + #eval context2code(context) + list = context['list'] output = nil @ntimes.times do eruby = Erubis::#{klass}.new(File.read(filename))