require 'erb' class ERBrunner #all compiled template functions go here def get_binding binding end end Erb_runner = ERBrunner.new class Test def initialize @erb = ERB.new(File.read("test.rhtml"), nil, '%') evalstr = "def run_erb\n" + "bnd = binding\n" + '@locals.each{|k,v| eval "#{k} = @locals[\"#{k}\"]", bnd }' + "\n#{@erb.src}\n_erbout\nend\n" print evalstr, "\n\n" eval evalstr, Erb_runner.get_binding end def runit Erb_runner.instance_variable_set "@mumu", "HALLO" Erb_runner.instance_variable_set "@locals", {'mumu'=>"HALLO"} bnd = Erb_runner.get_binding eval "Erb_runner.run_erb", bnd end end t = Test.new print t.runit