我通过控制台使用 ERB 进行元编程(用于数学软件)。例如,我有文件test.erb
包含
text line before ruby
<%= 'via <%=' %>
<% print 'print' %>
<% puts 'puts' %>
text line after ruby
当我解析它时$ erb test.erb
,我得到以下输出
printputs
text line before ruby
via <%=
text line after ruby
我对此并不感到惊讶,但想知道是否有一种很好的方法可以捕获print
方法的输出并将其放在 ERB 模板中调用它的地方?
text line before ruby
via <%=
print
puts
text line after ruby
想象一下,我有一个复杂的结构,我宁愿打印而不是在内部的字符串中收集输出<%= %>
。
更新
只是为了说明Brian的答案:
text line before ruby
<%= '<%=' %>
% print 'print'
% puts 'puts'
% E = _erbout
% E << '_erbout'+"\n"
text line after ruby
解析文件$ erb test.erb
:
printputs
text line before ruby
<%=
_erbout
text line after ruby