From: Trans Date: 2007-12-03T06:31:53+09:00 Subject: eruby cutting off top / binding issue I'm trying to use ERB bound to a controlled context, and it's failing when it build a template within another template. If you have any insights about this please let me know. I'm simply at a loss. This is a minimal model of the problem I'm having: require 'erb' class Context def initialize(page) @page = page end def render(*a) @page.render(*a) end end class Page def initialize @context = Context.new(self) @binding = @context.instance_eval{ binding } end def in1 %{ WAY UP HERE <%= render('in2') %> WAY DOWN HERE } end def in2 %{ RIGHT UP HERE <%= render('in3') %> RIGHT DOWN HERE } end def in3 "IN THE MIDDLE" end def render(var) input = eval(var) template = ERB.new(input) template.result(@binding) end end puts Page.new.render('in1') I'm getting: IN THE MIDDLE RIGHT DOWN HERE WAY DOWN HERE Instead of the expected: WAY UP HERE RIGHT UP HERE IN THE MIDDLE RIGHT DOWN HERE WAY DOWN HERE Why is it cutting off the top? It makes now sense. If I remove the context by changing to: template.result(binding) Then it works fine. T.