我想自动化一些事情,比如:
- 使用预先选择的数据库创建一个新的 Ruby on Rails 应用程序,Git 初始化它,创建一个Heroku项目,提交所有文件等。
- 通过 SSH 将文件夹中的所有文件上传到另一台计算机,但不要覆盖文件。
- 升级 Ubuntu,通过 apt-get 安装所有基础包。
据我了解,用于此的工具是 Rake 和 Thor,但是,我应该使用哪一个?
在我看来,Rake 似乎更受欢迎。我听说有人推荐托尔。
这些如何在一个破败中相互站立?
Rake 和 Thor 有不同的用途。
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 完美地说明了这些工具中的每一个最适合的地方。
对于设置 Ubuntu 家务,Chef 可能是更好的选择。
从他们的网站:
Chef 是一个开源系统集成框架,旨在为您的整个基础架构带来服务器配置管理的优势。
它是用 Ruby 编写的,并且有大量的厨师食谱/食谱。Chef 将负责设置 Ubuntu 并安装软件包、服务器等。
我不知道你是否在使用虚拟机,但是 Vagrant 会设置一个虚拟机,然后使用 Chef 来配置它。
这里有一些重要的事情要提。
http://guides.rubyonrails.org/generators.html在其第 8 节应用程序模板中。
你可以执行 git 命令,选择 gems,capify 项目。
您还可以执行系统命令来满足您的最后一点:Upgrade Ubuntu, install all basic packages through apt-get
.