今天研究了下rake,还有rake在rails中运用,做了点总结,大家可以看看
rake的介绍
Rake支持任务创建,任务依赖关系追踪,以及文件编译时间识别。最后一个功能对Ruby程序员应该用不到,但如果你同时还是一个C程序员,那么你可以尝试使用Rake来替代Make。
rake如何工作
1.给个简单的例子
假设使用Rake来管理这3个任务,那么我首先需要创建一个Rakefile文件,添加以下内容
# -*- encoding : utf-8 -*-
task :purchaseAlcohol do
puts "买瓶酒"
end
task :mixDrink do
puts "买点下酒菜"
end
task :getSmashed do
puts "喝醉了"
end
2.如何组织任务的依赖关系
有些任务在执行前必须先执行其它任务,就是所说的依赖关系。下面的例子就可以说明rake如何处理依赖关系
# -*- encoding : utf-8 -*-
desc "purchasAlcohol"
task :purchaseAlcohol do
puts "买瓶酒"
end
desc "mixDrink"
task :mixDrink => :purchaseAlcohol do
puts "买点下酒菜"
end
desc "getSmashed"
task :getSmashed => :mixDrink do
puts "喝醉了"
end
3.rake的命名空间
用命名空间把你的任务都整合起来,进行分类,看下面的例子
# -*- encoding : utf-8 -*-
namespace :aaron do
desc "purchasAlcohol"
task :purchaseAlcohol do
puts "买瓶酒"
end
desc "mixDrink"
task :mixDrink => :purchaseAlcohol do
puts "买点下酒菜"
end
desc "getSmashed"
task :getSmashed => :mixDrink do
puts "喝醉了"
end
end
命名空间允许你将你的任务进行分类,你可以在一个Rakefile内创建多个命名空间,现在输入rake -T你会得到如下输出
rake aaron:getSmashed # getSmashed
rake aaron:mixDrink # mixDrink
rake aaron:purchaseAlcohol # purchasAlcohol
4.有用的任务
以上举的例子都及其简单,通常我们建rake任务是为了完成复杂的功能
下面再给个简单的例子,但比较实用
此例子来自网上
desc "Create blank directories if they don't already exist"
task(:create_directories) do
# The folders I need to create
shared_folders = ["icons","images","groups"]
for folder in shared_folders
# Check to see if it exists
if File.exists?(folder)
puts "#{folder} exists"
else
puts "#{folder} doesn't exist so we're creating"
Dir.mkdir "#{folder}"
end
end
end
5.rake在rails中使用
在lib/tasks/文件夹中添加rake文件,例如aaron.rake,在里面添加你所需要完成的任务
rake -T 可以查看你的rake任务
当然,rake任务还可以访问rails model