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

首頁 > 編程 > Ruby > 正文

如何寫漂亮的Rakefile

2020-02-24 15:36:06
字體:
供稿:網(wǎng)友

相對于Rake,Ruby比Make要更好用一些,但是它們之間有不同的地方就是Rakefile本來是一段Ruby代碼,而且Rake可以很直接地做任何Ruby能做的事,那么你知道如何寫漂亮的Rakefile嗎?

不過,代碼始終是代碼,Makefile 尚且可以寫得很亂,Rakefile 要寫亂就更容易了,幸運地是,Rake 提供了一些功能讓我們可以來對 Rakefile 做一些組織工作。

其中之一就是 import 功能,把不同功能的 task 寫到不同的文件中,例如,像這個樣子:

復(fù)制代碼 代碼如下:

Rakefile
task/
? +-- doc.rake
? +-- compile.rake
? `-- deploy.rake


這樣,在 Rakefile 里寫上

?

?


這樣的語句導(dǎo)入各個子任務(wù)即可,不同的任務(wù)寫到不同的文件里面就不會一團糟了。而且,import 同 Ruby 自己的 require 不一樣,import 并不是立即進(jìn)行導(dǎo)入的,而是在整個 Rakefile 執(zhí)行結(jié)束之后才全部導(dǎo)入,因此,可以在任意的地方寫 import ,而不用擔(dān)心依賴關(guān)系,需要共享的變量之類的只要在主 Rakefile 中定義了即可。

?

import 是組織不同的功能模塊,除此之外,Rake 還允許我們對一些重復(fù)性的任務(wù)進(jìn)行抽象,具體來說,就是自定義的 task 。通常情況下,我們使用 Rake 提供的通用 task 和文件 task 來構(gòu)造我們需要完成的工作,除此之外,Rake 還自帶了一些針對特殊任務(wù)的 task 類型,例如構(gòu)建 rdoc 或者運行 test 等。實際上,一種任務(wù)就是一個普通的 Ruby 類,我們可以繼承 Rake 里的 Task 類并重新定義相關(guān)的函數(shù)來實現(xiàn)自定義的 task 類型。不過,這樣多少有些麻煩,實際上,很多時候我們要定義的任務(wù)都可以分解為一些小任務(wù)用內(nèi)置的通用 task 和 file task 來實現(xiàn)的,這個時候可以用 Tasklib 來更方便地定義自定義的任務(wù)。

具體地來說,就是寫一個類,繼承自 Tasklib (雖然實際上只是約定而并不是必須的),然后在這個類的初始化函數(shù)里用 task 或者 file 來定義實際完成任務(wù)的子 task 即可。用一個實際的例子來說,比如說,我們可以定義一個 ErlcTask ,可以用來把一些 Erlang 文件編譯到某個目錄下,并在 clean 的時候自動能把編譯出來的 .beam 文件清理掉:


首先定義一些 Task 相關(guān)的屬性,在初始化函數(shù)里設(shè)置初值,然后調(diào)用 block 來填充實際的值,最后調(diào)用 define 函數(shù),define 函數(shù)就使用 directory 、file 和 task 分別定義了建立目錄、編譯和清理的任務(wù)。如果了解 Ruby 和 Rake 的基本語法的話,應(yīng)該很容易看明白了。

?

接下來把這個文件保存到某個 .rb 里,然后在 Rakefile 里 require 之,就可以這樣寫了:

?

看完本文內(nèi)容后大家知道如何寫漂亮的Rakefile了嗎?希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。

?

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 准格尔旗| 广州市| 花垣县| 鹤峰县| 柳河县| 富顺县| 淄博市| 抚州市| 庆云县| 巴南区| 辰溪县| 湘阴县| 曲沃县| 简阳市| 三门县| 麻栗坡县| 龙川县| 福海县| 库伦旗| 浠水县| 井研县| 盐城市| 都匀市| 黄大仙区| 石城县| 安徽省| 乌海市| 黔江区| 巴彦淖尔市| 鸡泽县| 大邑县| 永清县| 栖霞市| 西昌市| 岫岩| 岫岩| 嘉鱼县| 康平县| 井陉县| 黄石市| 上杭县|