#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
этом до того, как провел здесь исследование. Я знал, что каким -то образом вызывается этот другой генератор, я просто не знал как . Теперь я знаю, благодаря вашему вопросу!