簡介
Ruby Project依賴于一系列的ruby gems.而bundler是一個很好的管理ruby項目gems的工具老玛。當(dāng)然也是一個ruby gem.
使用bundler可以為你的ruby project提供統(tǒng)一的構(gòu)建環(huán)境(無論是production, development, 還是staging)肴甸,因為bunder可以很好的跟蹤和安裝指定的和預(yù)期的gem.
試驗:
1. 安裝ruby gem
前提:試驗環(huán)境中已存在ruby和rubygem
2. 使用bundler安裝gem
1). 在ruby project的根目錄下寫Gemfile
2). 安裝gems?
和你的Gemfile同級目錄運行’bundle install --verbose‘,可以看到整個安裝過程前方。bundler根據(jù)你指定的gem源查找相應(yīng)的version沿彭,并進行安裝峻汉。
再次運行'bundle install', 則bunlder會檢測是否已安裝相應(yīng)的Gem包互躬,如果已經(jīng)安裝开仰,則直接using否則進行安裝拟枚,第一次安裝完成后, bundler保存當(dāng)前的gems的快照到Gemfile.lock
remote, platforms, dependencies, build with 字段的意思很好理解,這里不再復(fù)述抖所。
另外梨州,Gemfile.lock中specs中的gems之間層級關(guān)系很簡單,就是gem及其下屬依賴田轧。
從下往上讀Gemfile.lock暴匠,可發(fā)現(xiàn),最底層依賴的包在最下面傻粘。
而specs則是gems依賴關(guān)系每窖、版本信息的明細(xì)清單。
3) 驗證Gemfile.lock的工作原理
copy這個ruby project到另一個host下(ruby, rubygem已安裝)弦悉,運行bundle install
對比圖'install gems'窒典,可以看出,安裝的gems完全一致
即稽莉, bundle install在存在Gemfile.lock的情況下瀑志,依據(jù)Gemfile.lock進行安裝。如果沒有Gemfile.lock則會根據(jù)Gemfile進行安裝,并生成Gemfile.lock.
是劈猪,Gemfile.lock就是簡介中所說的gems快照昧甘。而不同環(huán)境間一致的部署就是依賴Gemfile.lock而實現(xiàn)的。
3. upgrade gems
1) 更新現(xiàn)有的gem包的版本至高版本(而非latest)
編輯Gemfile中g(shù)em的version, 然后運行bundle install, 則Gemfile.lock會自動更新
我們可以看到战得,我們更新了rake gem到高一些的版本
2) 更新沒有指定版本的gem到latest版本充边,則運行bundle update gem
如果不指定gem, bundle update 則會更新所有滿足條件的gem到最新版本常侦。