天天看點

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的文章