加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby – 如何让Thor找到系统安装的模板.thor文件?

发布时间:2020-12-17 03:21:10 所属栏目:百科 来源:网络整理
导读:我已经创建了一个.thor脚本,用于按照我喜欢的方式设置一个新的 ruby项目.我正在使用Thor :: Actions目录命令完全从模板目录结构构建应用程序,而不是使用heredocs内联定义它们.脚本目录看起来像这样: rubynu.thortemplate/ bin/ lib/ %app_name%.rb.tt %app_
我已经创建了一个.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>的路径因为它已安装.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读