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

时间:2010-08-19 17:08:17

标签: ruby rake thor

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

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

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

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

这些如何在破败中相互支持?

4 个答案:

答案 0 :(得分:98)

耙和雷神服务于不同的目的。

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可以很好地说明每种工具的最佳位置适合的。

答案 1 :(得分:13)

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

从他们的网站:

  

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

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

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

答案 2 :(得分:0)

我会选择puppet

顺便说一下,也许vagrant对你有用吗?

答案 3 :(得分:0)

这里有一些重要的事情需要提及。

http://guides.rubyonrails.org/generators.html在其第8节“应用程序模板”中。

你可以执行git命令,选择gems,capify project。

您还可以执行系统命令以满足您的最后一点:Upgrade Ubuntu, install all basic packages through apt-get