В Rails у нас есть как генераторы, так и шаблоны для быстрой установки и настройки приложений. Внешне, кажется, есть 2 различия между генераторами и шаблонами:
- Вы можете применять шаблоны при создании нового приложения с помощью
rails new appname -m path/to/template.rb
. Генераторы должны быть запущены после создания приложения rails с rails g generator_name
- Генераторы - это классы, составленные из ряда открытых методов, которые запускаются в той последовательности, в которой они объявлены. Шаблоны - это просто набор команд.
На мой взгляд, это делает генераторы и шаблоны практически идентичными. Если бы мне пришлось выбирать, я бы пошел с шаблонами, потому что запуск ряда открытых методов в том порядке, в котором они объявлены, кажется мне довольно странной OO-абстракцией. Ряд простых команд намного понятнее и не требует от читателя знания этого довольно необычного соглашения для понимания шаблонов.
Есть ли еще существенные различия между генераторами и шаблонами? Если да, есть ли ситуации, когда один из них более подходит, чем другой? Если нет, то почему в Rails есть и то, и другое, и в какой-то момент один метод может устареть?