我正在生成一個新的Rails應用程序自定義生成的,我不喜歡這樣如何更改自定義導軌生成器的源代碼? (索爾)
require 'thor'
require 'rails/generators/rails/app/app_generator'
class AppBuilder < Rails::AppBuilder
include Thor::Actions
include Thor::Shell
...
end
的問題是,如何添加一個新的源目錄(隨後被Thor::Actions#copy_file
,Thor::Actions#template
,和其他)?我的托爾的文檔中看到,Thor::Actions#source_paths
持有源(它的路徑的數組),所以我試圖重寫它在我的班級裏(因爲我已經包括Thor::Actions
):
def source_paths
[File.join(File.expand_path(File.dirname(__FILE__)), "templates")] + super
end
有了這個,我想補充的./templates
目錄中,同時仍然保留Rails的一個(這就是爲什麼+ super
在最後)。但它不起作用,它仍然列出Rails的唯一源代碼路徑。
我試過瀏覽Rails的源代碼,但是我找不到Rails如何將他的目錄放在源路徑中。我真的想知道:)
我試過了,我仍然得到這個錯誤:'找不到「」在任何源路徑。你目前的源代碼路徑是:path/to/gems/railties-3.2.2/lib/rails/generators/rails/app/templates,所以它根本沒有選擇它。 –
2012-03-30 12:12:51
我添加了類定義,並且包含我用於回答的內容。 – 2012-03-30 17:50:31
但是我必須繼承'Rails :: AppBuilder',因爲我重寫了那個類生成的東西。 – 2012-03-31 12:23:03