Rake vs. Thor用于自动化脚本?

nev*_*ame 46 ruby rake thor

我希望自动执行以下操作:

  • 使用预先选择的数据库创建一个新的Ruby on Rails应用程序,Git初始化它,创建一个Heroku项目,提交所有文件等.
  • 通过SSH将文件夹中的所有文件上传到另一台计算机,但不要覆盖文件.
  • 升级Ubuntu,通过apt-get安装所有基本软件包.

根据我的理解,这方面的工具是Rake和Thor,但是,我应该使用哪一个?

在我看来,耙子更具事实性和受欢迎程度.我听过有人推荐Thor.

这些如何在破败中相互对立?

Der*_*ley 99

耙子和雷神服务于不同的目的.

Rake是一个特定于项目的通用构建脚本工具.换句话说,您将rakefile放入项目文件夹和项目的源代码控制中,并且可以在该rakefile中创建,构建和执行特定于项目的其他自动化任务.Rake需要rakefile才能运行.

Thor是一个通用的命令行脚本工具,可以很容易地在许多项目中重复使用脚本,并像你建议的那样进行项目设置等.Thor允许您"安装"可从系统上任何位置调用的可执行脚本,类似于调用" ruby"," gem"或" rake"命令行.但是,Thor的脚本更适合通用的跨应用程序自动化,因为Thor脚本不依赖于项目特定文件夹中的文件.Thor脚本是整个脚本,打包并安装在任何地方都可以重复使用.

根据您的要求,您最好使用Thor,因为您可以将脚本安装在一个位置,并使其在您的系统上的任何位置都可以使用.您不会受到Rake文件所在位置或类似内容的约束.

顺便说一句,Rails 3使用Thor几乎所有非项目特定的东西.你仍然有一个Rake文件,你仍然可以运行像" rake db:migrate"或" rake test:units" 这样的东西.Thor用于诸如" rails new ..."," rails server"和" rails generate ..."之类的东西.在Rails 3中使用Thor和Rake可以很好地说明这些工具最适合的位置.

  • 谢谢.:)"rails"命令是一个thor脚本 (4认同)
  • 这是一个很好的答案,但@Tom Corbin的答案在某些方面更好.选择的答案是使用Thor vs. Rake的最佳评估 - 但实际上,OP应该使用像Chef这样的配置管理器来执行他们声明的大部分内容.(*其余的,Thor比Rake好.) (2认同)

小智 13

为了设置Ubuntu杂务,Chef可能是更好的选择.

从他们的网站:

Chef是一个开源系统集成框架,旨在为整个基础架构带来服务器配置管理的优势.

它是用Ruby编写的,有大量的厨师食谱/烹饪书.Chef将处理设置Ubuntu并安装包,服务器等.

我不知道您是否使用虚拟机,但Vagrant将设置虚拟机,然后使用Chef进行配置.