2011-10-10 85 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'。我知道*以某種方式*這個其他的發電機正在被調用,我只是不知道*如何*。現在我知道了,謝謝你的提問! –