首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何让雷神为系统安装的.thor文件找到模板?

如何让雷神为系统安装的.thor文件找到模板?
EN

Stack Overflow用户
提问于 2011-12-07 13:31:23
回答 1查看 1.5K关注 0票数 5

我已经创建了一个.thor脚本,用于按照我喜欢的方式设置一个新的ruby项目。我使用Thor::Actions directory命令完全从模板目录结构构建应用程序,而不是使用heredocs内联定义它们。脚本目录如下所示:

代码语言:javascript
复制
rubynu.thor
template/
  bin/
  lib/
    %app_name%.rb.tt
    %app_name%
  README.markdown
  .gitignore
  ...

这真的很好用,让我很容易地可视化和改变模板的各个部分,因为我的口味改变了。

但是,一旦使用thor install rubynu.thor系统安装了.thor文件,我想不出让thor找到模板目录的好方法。Install会将.thor文件的副本粘贴到~/.thor中,但会忽略template/目录,因此不会再找到模板。

我不想硬编码source_root路径或手动将模板目录复制到~/.thor。雷神有没有内置的东西来处理安装模板和.thor文件?如果它们能在安装时打包在一起,那就太好了。

如果没有,那么解决这个问题的最好方法是什么?肯定有系统安装的thor任务在某个地方使用模板文件。你是怎么做到的?我想我可以绕过thor install,将其作为宝石提供(尽管这看起来有点夸张),或者咬紧牙关,将所有模板定义内联到一个巨大的.thor文件中(稍后更改结构就不那么令人愉快了)。

作为参考,下面是我使用的简单.thor文件:

代码语言:javascript
复制
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

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-12-11 09:55:10

如果您按如下方式设置.thor文件:

代码语言:javascript
复制
<my_thor_commands>/
  templates/
    bin/
    lib/
    ...
   main.thor

thor install <my_thor_command>将查找一个名为main.thor的文件,然后在<my_thor_command>中安装该文件和其他任何文件。在此之后,您可以依赖于:

代码语言:javascript
复制
def self.source_root
  File.dirname(__FILE__)
end

这将为您提供<my_thor_command>安装时的路径。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8410840

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档