…. Broke out some tests to be more explicit as well.
ErubisTemplate: add :engine_class option, for specifying custom engine class, and :escape_html option, for conveniently specifying Erubis::EscapedEruby engine.
Removes the template_source and local_assignment_code methods and replaces them with #precompiled_template, #precompiled_preamble, and #precompiled_postamble methods. Template subclasses can hook in and provide template source generation at different levels. Line offset calculation is cleaned up a bit as well.
This should guarantee that method names never collide and also improves lookup performance, since the method name is generated once and then stored in a Hash. The downside is that generating the method name initially will be a bit slower since we bring in MD5 and sort the keys.