我正在制作一个自定义生成器来生成新的 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如何放置his源路径中的目录。我真的很想知道:)
这有效:
require 'thor'
require 'rails/generators/rails/app/app_generator'
module Thor::Actions
def source_paths
[MY_TEMPLATES]
end
end
class AppBuilder < Rails::AppBuilder
...
end
我不明白为什么,但我已经在这上面花了太多时间,所以我不在乎。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)