我想实现自动化,比如:

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

据我所知,这方面的工具是Rake和Thor,但是,我应该使用哪一种?

在我看来,Rake实际上更受欢迎.我听人推荐雷神.

在一个简陋的故事中,这些人是如何站在一起的?

推荐答案

Rake和Thor有不同的用途.

Rake是一个通用的构建脚本工具,它是特定于项目的.换句话说,你把你的rakefile放到你的项目文件夹和项目的源代码管理中,你可以在这个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 ..."之类的工具.Thor和Rake在Rails 3中的使用完美地说明了这些工具最适合的位置.

Ruby相关问答推荐

在 Ruby 中,如何从派生类中重写同一方法的不同方法调用基类方法?

当数据包含换行符时,Ruby PKCS7 无法验证

如何返回此 OOP Ruby 代码最后一行中的变量?

Ruby open-uri 重定向被禁止

配置 SubLime Linter 插件以使用 Ruby 1.9 语法

Sinatra + Bundler?

如何在 Ruby 中合并多个哈希?

在 MacOS Sierra 上使用 RMagick 2.16 的 ImageMagick 7 找不到 MagickWand.h

使用 Bundler 时,为什么要关心 RVM 的 Gemset 功能?

Ruby 中是否有像 C 中一样的主要方法?

将 2 元素数组的数组转换为哈希,其中重复键附加附加值

在 Ruby 中创建数字、字符串、数组或哈希的 md5 哈希

Rails:Date.today 是 UTC 吗?

使用 for each 时识别最后一个循环

在 Ruby 中定义 [方括号] 方法是如何工作的?

Ruby中的每个块都可以有一行吗?

在 ruby​​ 的超类中调用另一个方法

Ruby 模板:如何将变量传递到内联 ERB?

如何在 Ruby 中做标准差?

何时在 Ruby 中使用 `require`、`load` 或 `autoload`?