国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

Ruby中任務(wù)構(gòu)建工具rake的入門學(xué)習(xí)教程

2019-10-26 19:28:58
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

Rake簡(jiǎn)介

Rake的意思是Ruby Make,一個(gè)用ruby開發(fā)的代碼構(gòu)建工具.

但是,為什么Ruby需要Rake?

    按理說(shuō)Ruby代碼無(wú)需編譯,應(yīng)該不需要Rake才對(duì)呀?原來(lái),Rake另有妙用,即把Rake當(dāng)做一個(gè)任務(wù)管理工具來(lái)使用...這樣做有兩個(gè)好處:

1.以任務(wù)的方式創(chuàng)建和運(yùn)行腳本

   當(dāng)然,你可以用腳本來(lái)創(chuàng)建每一個(gè)你希望自動(dòng)運(yùn)行的任務(wù).但是,對(duì)于大型的應(yīng)用來(lái)說(shuō),你幾乎總是需要為數(shù)據(jù)庫(kù)遷移(比如Rails中db:migrate任務(wù))、清空緩存、或者代碼維護(hù)等等編寫腳本.對(duì)于每一項(xiàng)任務(wù),你可能都需要寫若干腳本,這會(huì)讓你的管理變得復(fù)雜.那么,把它們用任務(wù)的方式整理到一起,會(huì)讓管理變得輕松很多.

2.追蹤和管理任務(wù)之間的依賴

Rake還提供了輕松管理任務(wù)之間依賴的方式.比如,"migrate"任務(wù)和"schema:dump"任務(wù)都依賴于 "connect_to_database"任務(wù),那么在"migrate"任務(wù)調(diào)用之前,"connect_to_database"任務(wù)都會(huì)被執(zhí)行.

下面入正題吧,即如何用Rake編寫一個(gè)任務(wù)腳本..

順序執(zhí)行

在Rake中定義任務(wù)后,可以指定任務(wù)的執(zhí)行順序,例如,每天早晨起床后的例行公事:
1. 關(guān)閉鬧鐘
2. 梳洗打扮
3. 泡杯咖啡
4. 遛狗
上面的幾項(xiàng)事物,在Rakefile中這樣描述

 

 task :turn_off_alarm do  puts "Turned off alarm. Would have liked 5 more minutes, though." end task :groom_myself do  puts "Brushed teeth."  puts "Showered."  puts "Shaved." end task :make_coffee do  cups = ENV["COFFEE_CUPS"] || 2  puts "Made #{cups} cups of coffee. Shakes are gone." end task :walk_dog do  puts "Dog walked." end task :ready_for_the_day => [:turn_off_alarm, :groom_myself, :make_coffee, :walk_dog] do  puts "Ready for the day!" end


通過(guò)rake ready_for_the_day來(lái)執(zhí)行任務(wù),然后你就可以看到,所有的task都在按照你預(yù)定的順序在執(zhí)行。

 Turned off alarm. Would have liked 5 more minutes, though. Brushed teeth. Showered. Shaved. Made 5 cups of coffee. Shakes are gone. Dog walked. Ready for the day!


此外還可以用過(guò)rake make_coffee COFFEE_CUPS=5這樣在命令中給變量賦值。

命名空間

上面那樣定義任務(wù)沒有問(wèn)題,但如果你需要另外定義些事物,比如工作相關(guān)的,交通相關(guān)的,這時(shí)候所有的任務(wù)混雜到一起顯然就不合適了,畢竟上面那些任務(wù)只是我們起床的例行事物,與其它無(wú)關(guān)。

通過(guò)namespace可以幫助我們定義出Rails中類似rake db:migrate的任務(wù),描畫出事物間清晰的邊界,將上面的任務(wù)包括在namespace的一個(gè)代碼塊中,如下

 namespace :morning do  task :turn_of_alarm  .... end


這一次我們的調(diào)用命令就需要稍微做出些許變化,rake COFFEE_CUPS=3 morning:ready_for_the_day。 是不是跟rails中的rake任務(wù)調(diào)用方式很像呢?

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 东源县| 郴州市| 靖宇县| 长春市| 石家庄市| 方山县| 安阳县| 桦甸市| 金寨县| 韶关市| 永州市| 潮安县| 虹口区| 江陵县| 桂林市| 临桂县| 郎溪县| 清原| 乌海市| 灵武市| 永昌县| 邻水| 石家庄市| 分宜县| 绥德县| 金寨县| 江安县| 洛宁县| 宁安市| 始兴县| 荆州市| 三明市| 蓬莱市| 商丘市| 泗水县| 特克斯县| 广东省| 买车| 德化县| 随州市| 甘洛县|