# ERB (Embedded Ruby) ERB is an easy-to-use, but also very powerful, [template processor][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][sprintf], ERB can format run-time data into a string. ERB, however, is *much more powerful* ## How ERB Works 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." ## How to Use ERB You can use ERB either: - In a program: see class ERB. - From the command line: see [ERB Executable][erb executable]. ## Installation ERB is installed with Ruby, and so there's no further installation needed. ## Other Template Engines There are a variety of template engines available in various Ruby projects. For example, [RDoc][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][ruby toolbox]. ## Code The ERB source code is in GitHub project [ruby/erb][ruby/erb]. ## Bugs Bugfixes may be filed at [ERB Pull Requests][erb pull requests]. ## License This software is available as open source under the terms of the [2-Clause BSD License][2-clause bsd license]. [2-clause bsd license]: https://opensource.org/licenses/BSD-2-Clause [erb executable]: rdoc-ref:erb_executable.md [erb pull requests]: https://github.com/ruby/erb/pull [rdoc]: https://ruby.github.io/rdoc/ [ruby/erb]: https://github.com/ruby/erb [ruby toolbox]: https://www.ruby-toolbox.com/categories/template_engines [sprintf]: https://docs.ruby-lang.org/en/master/Kernel.html#method-i-sprintf [template processor]: https://en.wikipedia.org/wiki/Template_processor_