Rakefile

作者: z_k | 来源:发表于2018-10-07 15:54 被阅读0次

Rake 的作用类似于C的make。用来定义和执行任务。它没有专门的语法,完全用ruby来写。

Task

一个任务包含:名称(String或Symbol),后面是一个数组(包含一些先决条件,即其他任务名)或一个block。
同一个任务可以定义多次,就好像这个任务是分成几部分定义一样,最终是各部分的合并。

task :name
task name: [:prereq1, :prereq2]
task name: %w[prereq1 prereq2]

task name: [:prereq1, :prereq2] do |t|
  # actions (may reference t)
end

File task

文件任务通过以下文件来创建其他文件,即建立文件的依赖关系。它用 file 方法,而不是 task,任务名称是字符串

# 通过 a.o 和 b.o 创建 prog 文件,创建的方法在 block 里。
file "prog" => ["a.o", "b.o"] do |t|
  sh "cc -o #{t.name} #{t.prerequisites.join(' ')}"
end

Directory Tasks

目录任务是文件任务的一种快捷方式

directory "testdata/examples/doc"

# 等同于
file "testdata" do |t| mkdir t.name end
file "testdata/examples" => ["testdata"] do |t| mkdir t.name end
file "testdata/examples/doc" => ["testdata/examples"] do |t| mkdir t.name end

Rules

没有指定任务名称,而是规定任务名称的格式。如下面是形如xx.o的任务。


rule '.o' => ['.c'] do |t|
  sh "cc #{t.source} -c -o #{t.name}"
end

Comments

除了ruby的注释外,可以使用 desc 来描述任务,这样就可以用 rake -T来显示该任务了。

desc "Create a distribution package"
task package: %w[ ... ] do ... end

命名空间

namespace "main" do
  task :build do
    # Build the main program
  end
end

namespace "samples" do
  task :build do
    # Build the sample programs
  end
end

task build: %w[main:build samples:build]

Rakefile 文件可以分成多个文件放在 lib目录里,如rails的 lib/tasks

当你在项目目录里执行 rake 时,首先在当前目录查找 Rakefile 文件,如果没有会向上级目录查找

相关文章

  • Rakefile

    Rake 的作用类似于C的make。用来定义和执行任务。它没有专门的语法,完全用ruby来写。 Task 一个任务...

  • 创建自己的GEM包

    新建gem包 Gemfile 描述dependency Rakefile发布和打包的rake tasks my_p...

  • 构建一个 Ruby Gem 第五章 发布

    发布 在第二章中, 我们简要的看了一下默认的 bundler 给我们创建的 Rakefile: 这单独的一行可以让...

网友评论

      本文标题:Rakefile

      本文链接:https://www.haomeiwen.com/subject/prelaftx.html