天天看点

Ruby'Rake Build Tool

Rake开始是作为Ruby的构建包,但不局限于此,它可作为一个自动化工具。可用它在项目中作所有自动化任务。

Rake运行时,默认会在当前目录查找叫Rakefile的文件,里面有需要它执行的任务。

desc "Remove files whose names end with a tilde"
task :delete_unix_backups do
  files = Dir['*~']
  rm(files, verbose: true) unless files.empty?
end
           

 desc与task是Rake定义的方法,task的名称是一个symbol。

调用这个Rake的方式:

rake delete_unix_backups(注意没有使用symbol-没有代冒号)。

如果有多个任务,可以定义一个任务来执行它们:

desc "Remove Unix and Windows backup files"
task :delete_backups =>[ :delete_unix_backups, :delete_windows_backups ] do
  puts "All backups deleted"
end
           

 上面的task方法,接收一个hash作为参数,它的key是任务名,value就是另外两个任务的列表。

对上面的代码进行重构,将删除的逻辑共用抽出来。

def delete(pattern)
  files = Dir[pattern]
  rm(files, verbose: true) unless files.empty?
end

desc "Remove files whose names end with a tilde"
task :delete_unix_backups do
  delete "*~"
end

desc "Remove files with a .bak extension"
task :delete_windows_backups do
  delete "*.bak"
end

desc "Remove Unix and Windows backup files"
task :delete_backups => [ :delete_unix_backups, :delete_windows_backups ] do
  puts "All backups deleted"
end
           

 如果Rake任务的名称叫default,在执行rake命令不输入参数时,会执行这个任务。

$rake -T 命令列出所有任务。

Martin Fowler写的关于rake的文章