Запуск другого генератора в генераторе

#ruby-on-rails-3 #thor

#ruby-on-rails-3 #тор

Вопрос:

Я создал камень строительных лесов, который использует другой камень для создания докладчиков. Я создал этот генератор строительных лесов, используя генераторы Rails 3. Это работает следующим образом:

 rails g stager:scaffold User
  

Я создал еще один драгоценный камень для создания докладчиков. Я хочу использовать этот драгоценный камень для создания презентатора с каждым каркасом. В настоящее время я делаю следующее для достижения этой цели:

 run "rails g exhibit:presenter #{scaffold_name}"
  

Проблема в том, что, похоже, при вызове этого генератора происходит перезагрузка среды Rails, что делает его немного медленным. Мне интересно, есть ли лучший способ вызвать другой генератор внутри генератора. Итак: есть ли лучший способ создать начало генератора Rails? 😉

Ответ №1:

Вы должны определить hook_for другой генератор в своем классе generator. ScaffoldGenerator Вероятно, это лучший пример этого, поскольку у него есть хук для scaffold_controller генератора.

Если вы хотите передать аргументы своему генератору, вероятно, лучше использовать что-то вроде hook_for примеров, приведенных ниже в этом файле, для ресурсов и движка таблиц стилей.

Комментарии:

1. Спасибо за ваш ответ. Я никогда не слышал о hook_for, так что спасибо за это. Ваша ссылка подтолкнула меня в правильном направлении. Мне нужно было использовать ‘invoke’. Теперь это работает как шарм! 🙂

2. Честно говоря, я не знал об hook_for этом до того, как провел здесь исследование. Я знал, что каким -то образом вызывается этот другой генератор, я просто не знал как . Теперь я знаю, благодаря вашему вопросу!