婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

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

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

熱門標(biāo)簽:開封百應(yīng)電銷機器人聯(lián)系方式 邯鄲外呼調(diào)研線路 買了外呼系統(tǒng)不想用了怎么辦 電話機器人電話卡封號怎么辦 真人語音電銷機器人系統(tǒng) 浦東上海400開頭的電話申請 北京語音電銷機器人價格 樂昌電話機器人 武漢呼叫中心外呼系統(tǒng)線路商

Rake簡介

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

但是,為什么Ruby需要Rake?

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

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

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

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

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

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

順序執(zhí)行

在Rake中定義任務(wù)后,可以指定任務(wù)的執(zhí)行順序,例如,每天早晨起床后的例行公事:
1. 關(guān)閉鬧鐘
2. 梳洗打扮
3. 泡杯咖啡
4. 遛狗
上面的幾項事物,在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


通過rake ready_for_the_day來執(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!


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

命名空間

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

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

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


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

默認(rèn)Task

有了上面那些設(shè)置,如果我們忘記或者不想寫詳細(xì)的任務(wù)名稱,直接執(zhí)行rake會有什么效果呢,結(jié)果是rake aborted!,任務(wù)被中斷的報錯。既然有這樣的可能性,我們就需要消除這些隱患,通過設(shè)置default默認(rèn)任務(wù)就可以做到,如下:

 task :default => 'morning:turn_off_alarm'


當(dāng)你直接執(zhí)行rake命令時,會執(zhí)行默認(rèn)操作,幫我們關(guān)閉鬧鐘。

描述你的Task

當(dāng)任務(wù)漸漸變多以后,管理問題就暴露出來了,除了命名空間以外,我們還需要文檔類的支持,幫助我們梳理任務(wù)并顯示的告訴我們每個任務(wù)的目的和功能,這時你可以試一試用desc描述任務(wù)。

 ...
 desc "Make coffee"
 task :make_coffee do
  cups = ENV["COFFEE_CUPS"] || 2
  puts "Made #{cups} cups of coffee. Shakes are gone."
 end
 ...


上面的描述不僅可以在文檔中查看,同時使用rake -T也能清洗的了解到每個任務(wù)是做什么的。rake -T的輸出結(jié)果是按照字母順序排的序。

 rake morning:make_coffee    # Make coffee


調(diào)取Task

Rake還允許在不同任務(wù)之間互相調(diào)用,例如下面的代碼,你想在下午也來杯咖啡,不用重復(fù)定義,直接使用上午的泡法,來一杯即可。

namespace :afternoon do
  task :make_coffee do
   Rake::Task['morning:make_coffee'].invoke
   puts "Ready for the rest of the day!"
  end
 end


Rake腳本編寫

先來個簡單的例子,如下:

假設(shè)你是一個火星成員,老版本那些,即如燕兒虎跑之類的,在周末你打算去車車那邊打火鍋,然后集體PC去.對應(yīng)這個情況,你需要為自己制定三個任務(wù):搭車找車車、烤魚和網(wǎng)吧PC.用vim創(chuàng)建創(chuàng)建一個名叫rakefile的文件(備注:Rake會在當(dāng)前路徑下尋找名叫Rakefile、rakefile、RakeFile.rb和rakefile.rb的rake文件),并鍵入如下代碼:

desc "任務(wù)1 -- 搭車去車車那里"#這據(jù)說是個苦差,因為太遠了 
task :busboy do 
puts "發(fā)現(xiàn)挫男" 
end 
 
desc "任務(wù)2 -- 烤魚" 
task :bitchfish do 
puts "老板,先烤九斤魚" 
end 
 
desc "任務(wù)3 -- 網(wǎng)吧PC" 
task :pc do 
puts "我選中路" 
end 

打開命令行工具,進入這個文件所在目錄,然后運行下面的命令,大致應(yīng)該類似如下結(jié)果:

D:\work>rake busboy 
(in D:/work) 
發(fā)現(xiàn)挫男 
 
D:\work>rake bitchfish 
(in D:/work) 
老板,先烤九斤魚 
 
D:\work\ruby_works\ruby_book>rake laundry 
(in D:/work) 
我選中路 


(備注:文字部分是沒啥邏輯的,純粹娛樂下...)

分析:

相信看完上面那段東東,你已經(jīng)知道怎么搞了...現(xiàn)在介紹些基礎(chǔ)知識,方便加深理解.從上面的代碼可以知道,此文件一共定義了3個任務(wù),desc是Rake定義的方法,表示對下面定義任務(wù)的描述.這個描述會在使用Rake --tasks(或者Rake -T)命令時輸出在屏幕上.

D:\work>rake --tasks 
(in D:/work) 
rake bitchfish #任務(wù)2 -- 烤魚 
rake busboy #任務(wù)1 -- 搭車去車車那里(這據(jù)說是個苦差,因為太遠了) 
rake pc 任務(wù)3 -- 網(wǎng)吧PC 


task是Rake最重要的方法.它的方法定義是:task(args, block).任務(wù)體是一個block,本例中只是簡單輸出你所要做的工作.需要注意的是代碼

puts "發(fā)現(xiàn)挫男" 


完全是一個普通的Ruby語句,puts是Ruby中進行輸出的一般性方法,可以看出,Rake任務(wù)可以完全使用Ruby的能力,這使得它非常強大.

go..go..go..go..

接下來加入依賴關(guān)系:

很顯然,在我們定義的任務(wù)中,"烤魚"是依賴于"搭車去車車那里"的(其它地方有沒烤魚吃不知道,反正地點就定在那了).那么,我們需要在我們的任務(wù)定義中加入這個依賴關(guān)系,修改后的文件如下:

desc "任務(wù)1 -- 搭車去車車那里" 
task :busboy do 
puts "發(fā)現(xiàn)挫男" 
end 
 
desc "任務(wù)2 -- 烤魚" 
task :bitchfish => :busboy do 
puts "老板,先烤九斤魚" 
end 
 
desc "任務(wù)3 -- 網(wǎng)吧PC" 
task :pc do 
puts "我選中路" 
end 

再次運行烤魚任務(wù),你會得到如下結(jié)果:

D:\work>rake bitchfish 
(in D:/work) 
發(fā)現(xiàn)挫男 
老板,先烤九斤魚 

加入命名空間:

跟任何編程語言類似,當(dāng)你的rake文件很多時,當(dāng)你有很多任務(wù)的時候,你需要關(guān)注它們的命名沖突問題,命名空間(namespace)就是一個自然的解決方案.你可以為上面的三個任務(wù)定義一個叫做dan的命名空間.

namespace :dan do 
desc "任務(wù)1 -- 搭車去車車那里" 
task :busboy do 
puts "發(fā)現(xiàn)挫男" 
end 
…… 
end 

再次運行rake --tasks,你會得到如下的結(jié)果:

D:\work >rake --tasks 
(in D:/work) 
rake dan:bitchfish # 任務(wù)2 -- 烤魚 
rake dan:pc # 任務(wù)3 -- 網(wǎng)吧PC 
rake dan:busboy # 任務(wù)1 -- 搭車去車車那里 


你現(xiàn)在需要使用rake dan:bitchfish才能啟動烤魚這個任務(wù)了.
(BTW,你可以在你的rakefile中使用多個命名空間,對任務(wù)進行分類.)

了解了上面兩個知識點后,我們來了解下兩個具體實例:

1.在一個任務(wù)中調(diào)用另外一個任務(wù)

當(dāng)任務(wù)眾多的時候,你很可能需要在一個任務(wù)中調(diào)用另外一個任務(wù),假設(shè)我們把今天所有要做的工作定義為一個任務(wù):today.在這個任務(wù)中,有兩個任務(wù)需要被調(diào)用,一個是烤魚,一個是網(wǎng)吧PC.當(dāng)然,由于烤魚依賴于搭車去車車那里,我們還是需要搭車去車車那里的.在文件的頂部定義一個today的任務(wù):

desc "今天的任務(wù)" 
task :today do 
Rake::Task["dan:bitchfish"].invoke 
Rake::Task["dan:pc"].invoke 
end 
 
namespace :dan do 
…… 
end 

可以看出,調(diào)用其它任務(wù)的方式很簡單,只需要調(diào)用

Rake::Task["task_name"].invoke 

方法就可以了.在命令行中啟動rake today,可以得到:

D:\work >rake today 
(in D:/work) 
發(fā)現(xiàn)挫男 
老板,先烤九斤魚 
我選中路 

2.默認(rèn)任務(wù):

可以為Rake增加一個默認(rèn)任務(wù),這樣可以簡單地用Rake命令來觸發(fā)這個默認(rèn)任務(wù),在上面的rakefile中,我們可以用如下方式把"today"任務(wù)作為默認(rèn)任務(wù).

task :default => [:today] 


然后調(diào)用直接在命令行中調(diào)用rake,可以得到跟調(diào)用rake today同樣的輸出結(jié)果.

這就是我們簡單的一個Rake任務(wù)定義,下面是完整的修改后的rakefile:

task :default => [:today] 
 
desc "今天的任務(wù)" 
task :today do 
 Rake::Task["dan:bitchfish"].invoke 
 Rake::Task["dan:pc"].invoke 
end 
 
namesoace :dan do 
 desc "任務(wù)1 -- 搭車去車車那里(這據(jù)說是個苦差,因為太遠了)" 
 task :busboy do 
  puts "發(fā)現(xiàn)挫男" 
 end 
 
 desc "任務(wù)2 -- 烤魚" 
 task :bitchfish do 
  puts "老板,先烤九斤魚" 
 end 
 
 desc "任務(wù)3 -- 網(wǎng)吧PC" 
 task :pc do 
  puts "我選中路" 
 end 
end 

看完上面兩個例子,估計rake任務(wù)就算全部了解了...其它都是些代碼槍花罷了..多耍便是..

您可能感興趣的文章:
  • 學(xué)習(xí)Ruby你需要了解的相關(guān)知識(rvm, gem, bundle, rake, rails等)

標(biāo)簽:河北 石嘴山 松原 六安 淄博 宜春 鄂州 自貢

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Ruby中任務(wù)構(gòu)建工具rake的入門學(xué)習(xí)教程》,本文關(guān)鍵詞  Ruby,中,任務(wù),構(gòu)建,工具,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Ruby中任務(wù)構(gòu)建工具rake的入門學(xué)習(xí)教程》相關(guān)的同類信息!
  • 本頁收集關(guān)于Ruby中任務(wù)構(gòu)建工具rake的入門學(xué)習(xí)教程的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    国产精品久久久久一区二区三区 | 亚洲国产综合91精品麻豆| 日韩女优av电影在线观看| 欧美日韩精品电影| 欧美日本在线一区| 欧美肥妇毛茸茸| 91超碰这里只有精品国产| 欧美日韩在线亚洲一区蜜芽| 精品视频1区2区3区| 欧美日本国产视频| 久久久久久一二三区| 成人av电影免费在线播放| 国产福利电影一区二区三区| 成人av午夜影院| 91丨九色丨蝌蚪丨老版| 精品美女在线观看| 一片黄亚洲嫩模| 色综合天天综合网天天看片| 国产成人精品一区二| 成人综合婷婷国产精品久久免费| 麻豆久久久久久久| 亚洲国产中文字幕| 五月天精品一区二区三区| 亚洲色图一区二区三区| 精品国产精品网麻豆系列| 国产成人av在线影院| 亚洲一区二区三区四区在线观看| 亚洲视频1区2区| 亚洲婷婷在线视频| 亚洲成av人片| 91精品欧美福利在线观看| 色婷婷精品大视频在线蜜桃视频 | 日韩经典一区二区| 欧美亚洲一区二区在线| 国产亲近乱来精品视频| 亚洲免费观看高清完整版在线观看熊 | 色国产精品一区在线观看| 日本道精品一区二区三区| 久久综合九色综合97婷婷女人| 国产精品麻豆欧美日韩ww| 亚洲国产精品久久久久秋霞影院| 国产不卡视频一区二区三区| 成人av网站免费观看| 色呦呦日韩精品| 激情亚洲综合在线| 激情图片小说一区| 国产精品私人影院| 91亚洲精品久久久蜜桃网站| 国产精品欧美综合在线| 色欲综合视频天天天| 亚洲精品亚洲人成人网在线播放| 国产成人午夜片在线观看高清观看| 国产午夜亚洲精品午夜鲁丝片| 亚洲视频香蕉人妖| 色综合色综合色综合色综合色综合 | 懂色av一区二区夜夜嗨| 久久av资源网| 成人蜜臀av电影| 中文字幕在线观看不卡| 不卡视频免费播放| 日韩午夜小视频| 色久优优欧美色久优优| 亚洲麻豆国产自偷在线| 午夜精品福利一区二区三区av| 国产精品入口麻豆原神| 欧美日本不卡视频| 狠狠色丁香婷婷综合| 亚洲色图视频网| 337p粉嫩大胆噜噜噜噜噜91av | 337p亚洲精品色噜噜噜| 日韩一级二级三级精品视频| 亚洲chinese男男1069| 91福利国产成人精品照片| 成人国产精品免费| 综合电影一区二区三区| 国产高清久久久| 久久久亚洲精品一区二区三区| 日韩精品电影一区亚洲| 欧美视频在线一区二区三区| 亚洲婷婷综合色高清在线| 国产91精品露脸国语对白| 在线不卡欧美精品一区二区三区| 一区二区三区日韩精品| 国产日韩欧美激情| 久久精品国产免费| 亚洲大片在线观看| 国产清纯美女被跳蛋高潮一区二区久久w | 精品伦理精品一区| 中文字幕av资源一区| 色婷婷亚洲综合| 亚洲综合激情网| 欧美成人video| 久久99精品久久只有精品| 国产欧美日韩在线观看| 国产成a人亚洲精| 久久奇米777| 欧美性xxxxxx少妇| 偷拍亚洲欧洲综合| 国产午夜亚洲精品不卡 | 91精品婷婷国产综合久久性色| 国内外精品视频| 日本一区二区视频在线观看| 国产精品一线二线三线| 亚洲精品久久久蜜桃| 欧美日韩亚洲综合一区二区三区| 国产专区综合网| 中文字幕在线免费不卡| 欧美日韩免费观看一区三区| 国产成人午夜视频| 亚洲伦理在线精品| 91精品国产欧美一区二区成人| 亚洲线精品一区二区三区| 4438x亚洲最大成人网| 国产一级精品在线| 国产在线一区观看| 国产精品不卡在线| 91丨porny丨首页| 国产精品二区一区二区aⅴ污介绍| 日韩在线一区二区| 激情综合色丁香一区二区| 韩日欧美一区二区三区| 韩国欧美一区二区| 欧美电影免费观看高清完整版| 国产精品激情偷乱一区二区∴| 亚洲欧美激情一区二区| 99视频精品免费视频| 欧日韩精品视频| eeuss鲁片一区二区三区在线看| 欧洲生活片亚洲生活在线观看| 亚洲h在线观看| 久久精品国产亚洲a| 色网站国产精品| 亚洲人成在线播放网站岛国 | 久久免费精品国产久精品久久久久| 亚洲欧美在线视频观看| 欧美日韩在线精品一区二区三区激情| 国产夫妻精品视频| 国产精品乱子久久久久| 欧美系列在线观看| 国产精品69毛片高清亚洲| 一区二区欧美国产| 久久精品一区四区| 欧美一区二区视频观看视频| 成人精品一区二区三区中文字幕| 国产福利一区二区三区视频在线| 日韩福利电影在线观看| 午夜精彩视频在线观看不卡| 国产精品久久久久久久久搜平片 | 久久蜜臀中文字幕| 成人av动漫在线| 国产在线视频不卡二| 亚洲国产精品自拍| 亚洲一区二区五区| 1区2区3区国产精品| 国产1区2区3区精品美女| 国产麻豆精品一区二区| 国产精品麻豆欧美日韩ww| 中文字幕亚洲区| 国产精品免费看片| 国产偷国产偷亚洲高清人白洁| 欧美一区二区三区影视| 欧美日韩激情一区| 91福利视频网站| 久久久久国产精品麻豆ai换脸 | 香蕉久久一区二区不卡无毒影院 | 国产成人免费视频网站| 5566中文字幕一区二区电影| 国产一区二区中文字幕| 亚洲男人天堂一区| 国产欧美一区视频| 91偷拍与自偷拍精品| 国产激情视频一区二区三区欧美| 欧美猛男超大videosgay| 国产精品一区专区| 中文字幕视频一区| 国产精品99久久久久久久vr| 久久综合丝袜日本网| 欧美日本精品一区二区三区| 国产精品伊人色| 久久超级碰视频| 国产精品麻豆网站| 一本久道久久综合中文字幕| 一区二区三区四区激情 | 中文字幕亚洲成人| 91在线丨porny丨国产| 国产a久久麻豆| 国产91富婆露脸刺激对白| 国产精品一区一区三区| 久久99精品视频| 成人在线视频一区| 97久久人人超碰| 日本大香伊一区二区三区| 白白色 亚洲乱淫| 欧美日韩精品一区二区三区蜜桃| 亚洲色图在线看| 日韩和欧美一区二区三区| 国产一区二区三区久久久| 色婷婷精品大视频在线蜜桃视频| 日韩一二在线观看| ...xxx性欧美|