今天研究了下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