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。