ruby – 如何让Thor找到系统安装的模板.thor文件?
我已经创建了一个.thor脚本,用于按照我喜欢的方式设置一个新的
ruby项目.我正在使用Thor :: Actions目录命令完全从模板目录结构构建应用程序,而不是使用heredocs内联定义它们.脚本目录看起来像这样:
rubynu.thor template/ bin/ lib/ %app_name%.rb.tt %app_name% README.markdown .gitignore ... 这非常有用,让我可以随着口味的变化轻松地想象和更改模板的各个部分. 但是,一旦使用thor install ruby??nu.thor系统安装了.thor文件,我就无法找到一个很好的方法来找到模板目录.安装将.thor文件的副本粘贴到?/ .thor但忽略模板/目录,因此不再找到模板. 我不想硬编码source_root路径或手动将模板目录复制到?/ .thor.是否内置了一些东西来处理安装模板和.thor文件?如果它们在安装时可以打包在一起会很棒. 如果没有,最好的解决方法是什么?当然,在某处使用模板文件的系统安装了thor任务.你过得怎么样?我想我可以绕过thor安装并将其作为一个宝石提供(虽然这看起来有点矫枉过正),或咬住子弹并将所有模板定义内联在一个巨大的.thor文件中(以后对结构进行更改不太令人愉快). 作为参考,这是我正在使用的简单.thor文件: class Rubynu < Thor::Group include Thor::Actions argument :app_name def self.source_root File.dirname(__FILE__) end def apply_directory_template directory 'template',app_name end end 谢谢! 解决方法
如果你设置这样的.thor文件:
<my_thor_commands>/ templates/ bin/ lib/ ... main.thor thor install< my_thor_command>将查找名为main.thor的文件,然后在< my_thor_command>中安装它和其他任何内容.在那之后,你可以依靠: def self.source_root File.dirname(__FILE__) end 这将为您提供< my_thor_command>的路径因为它已安装. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |