亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

如何優(yōu)雅的升級Ruby項目

Freeman / 2223人閱讀

摘要:選擇第三種方案的觀點通常是鎖定版本號穩(wěn)定,升級會帶來麻煩,以前升級出現(xiàn)過問題,求穩(wěn)等各種原因。問如果升級版本號真的出現(xiàn)問題了怎么辦答哪個出問題了找到問題的原因解決問題,如果解決不了可以不升級那個

一個長期維護(hù)的項目不斷輕松穩(wěn)定的升級也是一件很有挑戰(zhàn)的事。很多項目因為沒有及時升級導(dǎo)致升級越來越困難,維護(hù)成本越來越高。自從Bundler的出現(xiàn),Ruby項目的依賴管理變得方便和穩(wěn)定。

但是從最近的一個帖子(http://ruby-china.org/topics/172)發(fā)現(xiàn),在處理gem升級的問題上還存在一些分歧,升級方式主要有三種:

  1. optimistic[樂觀]
  2. pessimistic[悲觀]
  3. super pessimistic[超級悲觀]

以nokogiri這個gem為例:

gem ‘nokogiri’ #optimistic
gem ‘nokogiri’, ‘>=1.4.2’ #optimistic
gem ‘nokogiri’, ‘~>1.4.2’ #pessimistic
gem ‘nokogiri’, ‘~>1.4’ #pessimistic
gem ‘nokogiri’, ‘1.4.2’ # super pessimistic

第一種方式很少人采用,因為一旦升級很容易因為API不兼容導(dǎo)致你的項目爆掉。

主要分歧在第二種和第三種。選擇第三種方案(super pessimistic)的觀點通常是鎖定版本號穩(wěn)定,升級會帶來麻煩,以前升級出現(xiàn)過問題,求穩(wěn)等各種原因。

我比較推薦第二種(pessimistic)升級方式。

先解釋下>=1.4.2、~>1.4.2、1.4.2之間的區(qū)別:

gem ‘nokogiri’ #任何版本
gem ‘nokogiri’, ‘>=1.4.2’ #任何大于等于1.4.2的版本
gem ‘nokogiri’, ‘~>1.4.2’ #大于等于1.4.2并且小于1.5.0版本
gem ‘nokogiri’, ‘~>1.4’ #大于等于1.4.0并且小于2.0.0版本
gem ‘nokogiri’, ‘1.4.2’ # 只能等于1.4.2

還要說明一下Ruby gem采用的?Semantic Versioning

還拿nokogiri 1.4.2為例:

  • 1 → Major版本,在接口重構(gòu)情況下Major Version會增加,API不一定向后兼容
  • 4 → Minor版本,在增加新特性情況下Minor Version會增加,并且 API保持向后兼容
  • 2 → Patch版本,在bug fix的情況下Patch Version會增加,并且API保持向后兼容

可見,使用第二種方式既不會出現(xiàn)API不兼容問題,又會及時升級到?jīng)]有bug的版本。與第三種比較,優(yōu)點是: 升級方便,不需要修改Gemfile,直接運行bundle update,所有的gem升級到最新,如果需要升級gem的主版本號才需要更改Gemfile.

而指定版本號的方式需要知道最新版本是多少,并且一個一個的改版本號。增加了升級的復(fù)雜度。而實際上鎖定版本號的項目幾乎沒人去升級…

Bundler的FAQ也提到鎖定版本號的缺點:

FAQ:

問:gem作者不遵守semver規(guī)則怎么辦?

答:放棄使用他的gem!這也應(yīng)該成為選擇gem的衡量標(biāo)準(zhǔn)之一。曾經(jīng)rubygems自己沒有遵守這個規(guī)則,1.8.x系列修改了Public API導(dǎo)致大量gem安裝出現(xiàn)問題。 Loren Segal 從rubygems fork出了SlimGems,并且承諾長期維護(hù)和1.3.7兼容的API。

問:如果升級Patch版本號真的出現(xiàn)問題了怎么辦?

答:哪個gem出問題了找到問題的原因解決問題,如果解決不了可以不升級那個gem

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/562.html

相關(guān)文章

  • SegmentFault 技術(shù)周刊 Vol.40 - 2018,來學(xué)習(xí)一門新編程語言吧!

    摘要:入門,第一個這是一門很新的語言,年前后正式公布,算起來是比較年輕的編程語言了,更重要的是它是面向程序員的函數(shù)式編程語言,它的代碼運行在之上。它通過編輯類工具,帶來了先進(jìn)的編輯體驗,增強(qiáng)了語言服務(wù)。 showImg(https://segmentfault.com/img/bV1xdq?w=900&h=385); 新的一年不知不覺已經(jīng)到來了,總結(jié)過去的 2017,相信小伙們一定有很多收獲...

    caspar 評論0 收藏0
  • SegmentFault 技術(shù)周刊 Vol.40 - 2018,來學(xué)習(xí)一門新編程語言吧!

    摘要:入門,第一個這是一門很新的語言,年前后正式公布,算起來是比較年輕的編程語言了,更重要的是它是面向程序員的函數(shù)式編程語言,它的代碼運行在之上。它通過編輯類工具,帶來了先進(jìn)的編輯體驗,增強(qiáng)了語言服務(wù)。 showImg(https://segmentfault.com/img/bV1xdq?w=900&h=385); 新的一年不知不覺已經(jīng)到來了,總結(jié)過去的 2017,相信小伙們一定有很多收獲...

    nihao 評論0 收藏0
  • SegmentFault 技術(shù)周刊 Vol.40 - 2018,來學(xué)習(xí)一門新編程語言吧!

    摘要:入門,第一個這是一門很新的語言,年前后正式公布,算起來是比較年輕的編程語言了,更重要的是它是面向程序員的函數(shù)式編程語言,它的代碼運行在之上。它通過編輯類工具,帶來了先進(jìn)的編輯體驗,增強(qiáng)了語言服務(wù)。 showImg(https://segmentfault.com/img/bV1xdq?w=900&h=385); 新的一年不知不覺已經(jīng)到來了,總結(jié)過去的 2017,相信小伙們一定有很多收獲...

    Drummor 評論0 收藏0
  • Cucumber —— 優(yōu)雅、跨語言 BDD 框架

    摘要:是一個優(yōu)雅的行為驅(qū)動開發(fā)方案。使用編寫,但是它不僅適用于,還適用于其他語言使用進(jìn)行瀏覽器測試。此外,還支持大量的測試工具和網(wǎng)站框架,詳情見此。學(xué)習(xí)資源官方培訓(xùn)項目主頁編撰 cucumber 是 一個優(yōu)雅的BDD(行為驅(qū)動開發(fā))方案。 showImg(http://segmentfault.com/img/bVcdje); 示例 Feature: Search courses ...

    MkkHou 評論0 收藏0
  • 2019 為什么我們還會繼續(xù)使用 PHP ?

    摘要:但我還是使用它開發(fā)了很多軟件。那么問題就很明顯了為什么今天還在使用除了個人理想主義的偏好以外,還有很多理由。為什么使用而不是也許和比較的最重要的語言是。為什么選擇而不是你已有專業(yè)知識或者在使用庫。 showImg(https://segmentfault.com/img/remote/1460000018390090?w=790&h=466); 我們來開門見山地說。? PHP 是一門奇...

    guyan0319 評論0 收藏0

發(fā)表評論

0條評論

Freeman

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<