2014-07-04 68 views
0

我正在編寫Rails引擎,作爲其中的一部分,我有一個生成器腳本來複制一些遷移文件。列出了Rails生成器,但在運行時未找到

發電機位於這裏

lib/generators/install/install_generator.rb 

發電機看起來像這樣

module Calligraph 
    class InstallGenerator < Rails::Generators::NamedBase 
    ... 
    ... 
    end 
end 

在宿主應用程序,如果我做了rails g,我認爲這與其他發電機一起。

Calligraph: 
    calligraph:install 

如果我打

rails g calligraph:install 

它回來與

Could not find generator calligraph:install. 

上有什麼遺漏/錯誤的任何想法?

回答

2

嘗試將您的發電機移動到 lib/generators/calligraph/install/install_generator.rb

由於您的生成器是在一個模塊中定義的,因此Rails希望它包含在具有相同名稱的子目錄中,就像命名空間控制器或模塊中的其他Rails擴展一樣。

或者,如果您的生成器中有語法問題,您有時會收到「找不到生成器」的錯誤消息,但控制檯也會吐出一條跟蹤信息,並詳細說明如果出現這種情況,會出現什麼錯誤。

爲了讓您的發電機正常工作,還需要在發動機的某個位置需要rails/generators。我通常在生成器文件的頂部執行它,但由於rails g正在拾取您的生成器,因此您好像在某處處理過它。

+0

工作,謝謝! –

+0

這是文件夾約定,我做了一個'rails g generator install',並且錯過了命名空間。 –

+1

謝謝zeiv。你救了我的一天!沒有閱讀完整的堆棧軌跡,我一直在掙扎數小時「找不到發電機」。這個問題僅僅是由於我的生成器文件中存在一個愚蠢的語法錯誤。 –

相關問題