2011-10-10 60 views
2

我创建了一个脚手架宝石,它使用另一个宝石来生成演示者。我使用Rails 3生成器创建了这个脚手架生成器。它的工作原理是这样的:在发电机内运行其他发电机

rails g stager:scaffold User 

我创建了另一个创建演示者的gem。我想用这个宝石生成每个脚手架的主持人。目前,我做以下来实现:

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

的问题是,它似乎重新加载Rails环境时,该发电机被调用,使得它有点慢。我想知道是否有更好的方法来调用生成器中的另一个生成器。所以:有没有更好的方法来创建Rails生成器? ;)

回答

4

您必须在生成器类中定义hook_for另一个生成器。该ScaffoldGenerator大概是最好的例子,因为它has a hook for the scaffold_controller generator.

如果你想在参数的发电机通过,它可能会更好在这个文件中的资产和样式表引擎使用类似hook_for例子进一步下跌。

+0

谢谢你的回答。我从来没有听说过hook_for,所以非常感谢。你的链接把我推向了正确的方向。我需要使用'invoke'。它现在就像一种魅力! :) – RobinBrouwer

+0

说实话,在我做研究之前,我不知道'hook_for'。我知道*以某种方式*这个其他的发电机正在被调用,我只是不知道*如何*。现在我知道了,谢谢你的提问! –