\ERB is an easy-to-use, but also very powerful, template processor.
\ERB is commonly used to produce:
- Customized or personalized email messages.
- Customized or personalized web pages.
- Software code (in code-generating applications).
Like method sprintf, \ERB can format run-time data into a string. \ERB, however, is much more powerful
Using \ERB, you can create a template: a plain-text string that has specially-formatted tags, then store it into an \ERB object; when \ERB produces result string, it:
- Inserts run-time-evaluated expressions into the result.
- Executes snippets of Ruby code.
- Omits comments from the results.
In the result:
- All non-tag text is passed through, unchanged.
- Each tag is either replaced (expression tag), or omitted entirely (execution tag or comment tag).
There are three types of tags:
Tag | Form | Action | Text in Result |
---|---|---|---|
Expression tag | '<%= ruby_expression %>' | Evaluates ruby_expression. | Value of expression. |
Execution tag | '<% ruby_code %>' | Execute ruby_code. | None. |
Comment tag | '<%# comment_text %>' | None. | None. |
These examples use erb
, the \ERB command-line interface;
each "echoes" a string template and pipes it to erb
as input:
-
Expression tag:
$ echo "<%= $VERBOSE %>" | erb "false" $ echo "<%= 2 + 2 %>" | erb "4"
-
Execution tag:
echo "<% if $VERBOSE %> Long message. <% else %> Short message. <% end %>" | erb " Short message. "
-
Comment tag:
echo "<%# TODO: Fix this nonsense. %> Nonsense." | erb " Nonsense."
You can use \ERB either:
- In a program: see class ERB.
- From the command line: see ERB Executable.
\ERB is installed with Ruby, and so there's no further installation needed.
There are a variety of template engines available in various Ruby projects. For example, RDoc, distributed with Ruby, uses its own template engine, which can be reused elsewhere.
Other popular template engines may be found in the Ruby Toolbox.
The \ERB source code is in GitHub project ruby/erb/
Bugs may be reported at ERB Issues.
This software is available as open source under the terms of the 2-Clause BSD License.