Из-за языковых различий есть некоторые различия по сравнению с Java.
Большинство библиотек шаблонов для Ruby выполняют следующие шаги при компиляции / оптимизации:
- Шаблон скомпилирован в исходный код Ruby - не класс, а длинная процедура, которая добавляет к строковому буферу при обходе логики исходного шаблона.
- Этот код ruby оценивается для привязки к более поздней ссылке, предпочтительно внутри тела метода. Таким образом, интерпретатор анализирует его только один раз.
- Метод (или другой контекст), содержащий логику анализируемого шаблона, вызывается для его визуализации.
Так или иначе, скомпилированный код шаблона, таким образом, очень похож на более шумную версию вашего исходного шаблона и, как правило, не поможет вам в отладке, если вы не отлаживаете сам язык шаблона.
Всем, кто интересуется реализацией языка шаблонов, может понравиться Код наклона (используйте разные языки шаблонов с одинаковым интерфейсом рендеринга и оптимизацией) и Temple (отличный язык шаблонов). мета-реализация).