メタプログラミング用にコンソール経由で 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
内部の文字列に出力を収集するのではなく、印刷することを好む複雑な構造があると想像してください<%= %>
。
アップデート
ブライアンの答えを説明するために:
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