以下是一份关于 Ruby 中任务构建工具 Rake 的入门学习教程,包含详细例子:
Rake 简介
Rake 是 Ruby Make 的缩写,是一个用 Ruby 编写的构建工具。它类似于 Make,但使用 Ruby 语法来定义任务,无需编辑 XML 文件或担心复杂的 Makefile 语法。Rake 支持任务依赖和规则模式匹配,能够自动化执行构建、测试、打包、部署等开发任务。
安装 Rake
通过 RubyGems 安装 Rake,运行以下命令:
gem install rake
安装完成后,可通过 rake-V 验证是否安装成功。
创建 Rakefile
Rake 使用 Rakefile 文件来定义任务。在 Ruby 项目的根目录下创建一个名为 Rakefile 的文件。以下是一个简单的 Rakefile 示例:
desc "One line task description"
task :name_of_task do
sh 'echo haha'
end
其中, desc 用于定义任务的描述, task 定义任务名称及执行逻辑, sh 是 Rake 提供的方法,用于执行系统命令。
定义任务
普通任务
desc "A simple task"
task :simple_task do
puts "This is a simple task"
end
运行 rake simple_task,将输出任务描述和执行结果。
任务依赖
desc "Task with prerequisites"
task :task_two => ["task_one"] do
puts "Task two is running"
end
task :task_one do
puts "Task one is running"
end
执行 rake task_two 时,会先运行 task_one,再运行 task_two。
默认任务
task :default => ['my_task']
直接运行 rake 命令时,会执行默认任务。
命名空间
namespace :morning do
desc "Task in the morning namespace"
task :greet do
puts "Good morning!"
end
end
运行 rake morning:greet 来执行命名空间中的任务。
任务执行
在包含 Rakefile 的目录下,通过终端运行 rake任务名 来执行任务。例如,运行 rake simple_task 将执行定义好的 simple_task 任务。
示例:文件生成与清理
以下示例展示了如何使用 Rake 生成文件并清理输出:
require 'rake'
require 'rake/clean'
source_files = Rake::FileList.new("**/*.md", "**/*.markdown") do |fl|
fl.exclude("~*")
fl.exclude(/^scratch\//)
end
task :default => :html
task :html => source_files.ext(".html")
rule ".html" => ".md" do |t|
sh "pandoc -o #{t.name} #{t.source}"
end
task :cleanOut do
rm_rf "outputs"
end
CLEAN.include(source_files.ext(".html"))
此代码扫描当前目录中的 Markdown 文件,将其转换为 HTML 文件,并提供了清理输出文件的任务。
示例:项目部署
以下示例展示了如何使用 Rake 管理项目部署任务:
desc "Compile the project"
task :compile do
puts "Project compiled"
end
desc "Run unit tests"
task :test do
puts "Unit tests passed"
end
desc "Deploy the project"
task :deploy => [:compile, :test] do
puts "Project deployed"
end
运行 rake deploy 将按顺序执行编译、测试和部署任务。
总结
通过以上内容,你已经了解了 Rake 的基本概念、安装方法、Rakefile 的创建和任务定义方式。Rake 提供了强大的功能来自动化开发任务,合理使用它可以提高开发效率。