Rake 学习

浏览:583 发布日期:2015-12-20 01:44:28

Rake学习

  1. Rake是一种像Make的东西,我们可以设置任务,通过rake命令来执行。例如,rake任务卸载Rakefile文件中,例子如下

    task :maizui do puts "买醉" end

    task :chifan do puts "吃饭" end

    task :nvren do puts "女人" end

    task :jiehun => [ :maizui, :chifan, :nvren ] do puts "结婚" end

我们在shell中输入rake maizui,它会输出"买醉",其他如故

最后一个:jiehun任务,表示它依赖方括号中的任务,会依次先执行依赖任务。

例如:

rake jiehun 买醉 吃饭 女人 结婚

rake默认读取名为Rakefile的文件,你也可以通过-f指定文件,例如:

rake -f r1 hello #浙江执行r1文件中hello任务

文件任务

可以通过file命令从一个或多个文件生成文件任务。例如,将一种文件类型转换为另一种类型。

某Rakefile如下:

%W[ch1.md ch2.md ch3.md].each do |md|
    html_file = File.basename(md, ".md") + ".html"
    file html_file => md do 
        sh "touch #{html_file}"
        puts "生成#{html_file}文件完毕"
    end
end

file html_file ...,分别生成了ch1.html, ch2.html, ch3.html任务,通过rake ch1.html即可执行对应的file任务,它会生成ch1.html,再次执行rake ch1.html命令,任务不会执行,因为ch1.html已存在。

备注:file path, path可以是路径,不一定要在当前路径下的。

规则任务

rule 指令可以指定两个后缀字符串,使它相匹配,例如:

rule ".html" => ".md" do |t|
    sh "touch #{t.name}"

    puts "从#{t.source}生成#{t.name}文件完毕"
end

当我们执行rake ch1.html,它将会寻找ch1.md文件,执行块中的代码。t是Rake::FileTask对象,t.source为ch1.md,tname为ch1.html。