我注意到在rubygems.org上有很多寶石建議你用主版本而不是精確版本來指定它們。例如...我應該在我的Gemfile中指定確切的版本嗎?
gem "haml-rails", "~> 0.3.4" # "$ bundle install" will acquire the
# latest version before 1.0.
然而,基於它在我聽來就像倒不如敲定這樣的確切版本Bundler docs ...
gem "haml-rails", "0.3.4"
所以你的haml-rails gem和它的所有依賴不會向前漂移。如果您幾周後在另一臺計算機上籤出項目並運行$ bundle install
,則您將擁有與您指定的所有內容完全相同的版本。
我見過的發行點突破的東西,我想捆紮機的整個構思的一部分是「Bundle.lock
」所有的寶石版本。
但在rubygems.org他們用「〜>」了很多,所以也許我失去了一些東西?
任何澄清是在理解捆紮機和寶石管理對我很有幫助。
好的,所以寶石會保留在Gemfile.lock中記錄的已建立版本。那麼添加「〜>」的目的是什麼?那有什麼好處? – Ethan 2012-02-13 19:02:32
@ethan RubyGems的具有[DOC](http://rubygems.rubyforge.org/rubygems-update/Gem/Version.html)說明它(見 「防止版災難」)。它的要點是它只允許版本號中的最後一個整數增加(例如'〜> 1.0.5'允許更新到版本1.0.9999,但從不更新到1.1.x)。該機制允許更新gems,但不會引入可能破壞事物的不兼容性(它假定gem遵循鏈接概要的「Rational Versioning」策略)。 – 2012-02-13 19:29:24
@ethan下面是對RubyDocs網站關於「[悲觀運營商(http://docs.rubygems.org/read/chapter/16#page74)」(〜>)和[理性版本(HTTP一對夫婦更多的鏈接://docs.rubygems.org/read/chapter/7)。 – 2012-02-13 19:40:39