校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > Ruby中任務構建工具rake的入門學習教程

Ruby中任務構建工具rake的入門學習教程

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

Rake簡介

Rake的意思是Ruby Make,一個用ruby開發的代碼構建工具.

但是,為什么Ruby需要Rake?

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

1.以任務的方式創建和運行腳本

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

2.追蹤和管理任務之間的依賴

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

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

順序執行

在Rake中定義任務后,可以指定任務的執行順序,例如,每天早晨起床后的例行公事:
1. 關閉鬧鐘
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來執行任務,然后你就可以看到,所有的task都在按照你預定的順序在執行。

 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這樣在命令中給變量賦值。

命名空間

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

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

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


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

默認Task

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

 task :default => 'morning:turn_off_alarm'


當你直接執行rake命令時,會執行默認操作,幫我們關閉鬧鐘。

描述你的Task

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

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


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

 rake morning:make_coffee    # Make coffee


調取Task

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

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


Rake腳本編寫

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

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

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

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

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


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

分析:

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

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


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

puts "發現挫男" 


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

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

接下來加入依賴關系:

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

desc "任務1 -- 搭車去車車那里" 
task :busboy do 
puts "發現挫男" 
end 
 
desc "任務2 -- 烤魚" 
task :bitchfish => :busboy do 
puts "老板,先烤九斤魚" 
end 
 
desc "任務3 -- 網吧PC" 
task :pc do 
puts "我選中路" 
end 

再次運行烤魚任務,你會得到如下結果:

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

加入命名空間:

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

namespace :dan do 
desc "任務1 -- 搭車去車車那里" 
task :busboy do 
puts "發現挫男" 
end 
…… 
end 

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

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


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

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

1.在一個任務中調用另外一個任務

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

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

可以看出,調用其它任務的方式很簡單,只需要調用

Rake::Task["task_name"].invoke 

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

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

2.默認任務:

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

task :default => [:today] 


然后調用直接在命令行中調用rake,可以得到跟調用rake today同樣的輸出結果.

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

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

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

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

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

巨人網絡通訊聲明:本文標題《Ruby中任務構建工具rake的入門學習教程》,本文關鍵詞  Ruby,中,任務,構建,工具,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Ruby中任務構建工具rake的入門學習教程》相關的同類信息!
  • 本頁收集關于Ruby中任務構建工具rake的入門學習教程的相關信息資訊供網民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    久久婷婷久久一区二区三区| 欧美丝袜第三区| 亚洲一区二区欧美| 自拍偷在线精品自拍偷无码专区| 亚洲精品一线二线三线| 精品国产一区久久| 2021中文字幕一区亚洲| 26uuu亚洲| 国产日韩欧美麻豆| 成人免费小视频| 亚洲欧洲制服丝袜| 亚洲国产sm捆绑调教视频| 亚洲成人av电影在线| 天堂蜜桃91精品| 激情五月激情综合网| 韩国中文字幕2020精品| 成人性色生活片| 91丨porny丨蝌蚪视频| 在线视频你懂得一区| 欧美色综合影院| 日韩欧美国产小视频| 久久久久99精品国产片| 亚洲欧美激情插 | 亚洲美女视频在线| 亚洲综合色噜噜狠狠| 日韩中文字幕区一区有砖一区 | 欧美日韩久久久| 日韩欧美在线1卡| 国产精品素人视频| 亚洲永久精品国产| 国产一区二区在线视频| 色视频一区二区| 日韩精品一区二区三区在线观看 | 精品一区二区久久久| 不卡电影一区二区三区| 欧美放荡的少妇| 中文字幕一区二区在线观看 | 国产在线精品国自产拍免费| 91视频一区二区三区| 日韩免费成人网| 亚洲日本欧美天堂| 六月婷婷色综合| 色婷婷av一区二区三区之一色屋| 精品久久一区二区| 亚洲综合成人网| 国产91丝袜在线观看| av成人免费在线观看| 日韩欧美国产一二三区| 亚洲影院免费观看| 国产精品1区2区| 91精品国产欧美一区二区成人| 日韩一区在线播放| 国产成人亚洲综合a∨婷婷图片 | 色综合久久久久综合体桃花网| 欧美一区二区网站| 一区二区视频在线看| 国产久卡久卡久卡久卡视频精品| 6080yy午夜一二三区久久| 国产精品国产自产拍高清av王其| 麻豆成人久久精品二区三区红| 色欧美片视频在线观看在线视频| 国产亚洲一区二区三区| 蜜桃久久久久久| 欧美一区中文字幕| 亚洲国产视频a| 91黄色激情网站| 亚洲免费观看高清完整版在线观看 | 亚洲日本免费电影| av亚洲精华国产精华精| 欧美tickling挠脚心丨vk| 日韩精品视频网站| 欧美日韩一区高清| 亚洲在线一区二区三区| 欧美又粗又大又爽| 夜夜嗨av一区二区三区网页| 在线观看日韩一区| 亚洲线精品一区二区三区八戒| 在线欧美一区二区| 亚洲免费在线电影| 在线观看日韩精品| 日日夜夜精品免费视频| 欧美一激情一区二区三区| 免费精品视频在线| 欧美在线观看视频一区二区三区| 亚洲素人一区二区| 日韩一区二区不卡| 久久日韩精品一区二区五区| 国产精品夜夜爽| 欧美韩日一区二区三区| 成人免费高清视频在线观看| 中文字幕高清不卡| 色悠悠久久综合| 亚洲第一在线综合网站| 91精品午夜视频| 奇米影视一区二区三区| 精品福利一区二区三区免费视频| 午夜激情一区二区| 欧美tickling网站挠脚心| 风流少妇一区二区| 亚洲色图欧洲色图婷婷| 欧美日韩高清影院| 精品一区二区三区视频在线观看| 久久久噜噜噜久久人人看| 大白屁股一区二区视频| 亚洲精品高清在线| 日韩女优视频免费观看| 亚洲成人av一区二区| 色域天天综合网| 精品sm捆绑视频| 92国产精品观看| 人人爽香蕉精品| 国产精品区一区二区三区| 在线亚洲一区二区| 极品销魂美女一区二区三区| 亚洲天堂2014| 久久精品夜色噜噜亚洲a∨| 色综合久久久久久久| 国内精品伊人久久久久av一坑| 中文字幕制服丝袜成人av| 欧美高清精品3d| 99久久精品国产一区| 久久国产乱子精品免费女| 亚洲男帅同性gay1069| 久久一夜天堂av一区二区三区| 91麻豆文化传媒在线观看| 国产中文字幕一区| 亚洲国产精品一区二区尤物区| 国产午夜精品一区二区 | 亚洲另类色综合网站| 欧美成人一区二区| 色噜噜夜夜夜综合网| 国产精品1区2区| 麻豆精品在线视频| 亚洲一区二区在线观看视频| 国产精品毛片无遮挡高清| 欧美大黄免费观看| 欧美剧情片在线观看| 97精品国产97久久久久久久久久久久 | 欧洲精品一区二区三区在线观看| 国产高清亚洲一区| 久久99精品国产91久久来源| 亚洲18色成人| 亚洲自拍另类综合| 亚洲免费av高清| 自拍偷自拍亚洲精品播放| 中文字幕免费观看一区| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 亚洲视频免费在线| 国产精品久久午夜| 久久久久久一级片| 久久久国产综合精品女国产盗摄| 91精品久久久久久久99蜜桃| 4hu四虎永久在线影院成人| 色欧美日韩亚洲| 欧美日韩一区国产| 欧美裸体一区二区三区| 91黄色免费网站| 欧美色中文字幕| 欧美日韩mp4| 日韩三级精品电影久久久| 91精品综合久久久久久| 91精品国产欧美一区二区| 日韩视频在线观看一区二区| 欧美一级搡bbbb搡bbbb| 久久综合九色综合欧美就去吻| 日韩一级片在线观看| 日韩美女视频在线| 久久久国产精华| 中文字幕亚洲精品在线观看 | 欧美在线看片a免费观看| 欧美亚洲一区二区在线观看| 日韩欧美亚洲另类制服综合在线| 欧美男同性恋视频网站| 欧美一区二区不卡视频| 精品国产伦一区二区三区观看方式 | 亚洲电影一级黄| 激情五月婷婷综合网| 成人免费视频app| 精品污污网站免费看| 日韩区在线观看| 中文字幕第一区二区| 亚洲精品欧美专区| 日产欧产美韩系列久久99| 高清国产一区二区三区| 色嗨嗨av一区二区三区| 日韩欧美高清在线| 国产精品黄色在线观看| 亚洲国产精品视频| 国产永久精品大片wwwapp| 在线免费观看日本一区| 欧美成人官网二区| 亚洲女性喷水在线观看一区| 奇米综合一区二区三区精品视频| 久久激情五月婷婷| 日本一区二区免费在线| 国产欧美日本一区二区三区| 亚洲第一在线综合网站| 成人aa视频在线观看| 欧美一区二区在线视频| 亚洲日本青草视频在线怡红院|