我正在制作一个自定义生成器来生成一个新的 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 的文档中看到了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 是如何将他的目录放在源路径中的。我真的很想知道:)