[英]How to make Thor find templates for system installed .thor files?
我已經創建了一個.thor
腳本,用於以我喜歡的方式設置一個新的ruby項目。 我正在使用Thor :: Actions directory
命令完全從模板目錄結構構建應用程序,而不是與heredocs內聯定義它們。 腳本目錄如下所示:
rubynu.thor
template/
bin/
lib/
%app_name%.rb.tt
%app_name%
README.markdown
.gitignore
...
這確實非常有效,並且讓我可以根據自己的口味輕松地可視化和更改模板的各個部分。
但是,一旦使用thor install rubynu.thor
系統安裝了.thor
文件,我就無法找到一種找到模板目錄的好方法。 Install將.thor
文件的副本.thor
到~/.thor
但忽略了template/
目錄,因此不再找到模板。
我不想硬編碼source_root
路徑或手動將模板目錄中的內容復制到~/.thor
。 thor是否有內置的東西可以處理安裝模板以及.thor
文件? 如果可以在安裝時將它們打包在一起,那就太好了。
如果不是,解決此問題的最佳方法是什么? 當然,在某些使用模板文件的任務中安裝了系統。 你怎么樣 我想我可以繞開thor install
並將其作為gem提供(盡管這似乎.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>
安裝路徑。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.