2014-01-21 47 views
9

當我生成一個新的Rails 4項目中,的Gemfile看起來是這樣的:爲什麼rails沒有將某些寶石鎖定到特定版本?

source 'https://rubygems.org' 

# Bundle edge Rails instead: gem 'rails', github: 'rails/rails' 
gem 'rails', '4.0.2' 

# Use postgresql as the database for Active Record 
gem 'pg' 

# Use SCSS for stylesheets 
gem 'sass-rails', '~> 4.0.0' 

# Use Uglifier as compressor for JavaScript assets 
gem 'uglifier', '>= 1.3.0' 

# Use CoffeeScript for .js.coffee assets and views 
gem 'coffee-rails', '~> 4.0.0' 

# Use jquery as the JavaScript library 
gem 'jquery-rails' 

# Turbolinks makes following links in your web application faster. Read more: https://github.com/rails/turbolinks 
gem 'turbolinks' 

# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder 
gem 'jbuilder', '~> 1.2' 

group :doc do 
    # bundle exec rake doc:rails generates the API under doc/api. 
    gem 'sdoc', require: false 
end 

爲什麼不Rails的鎖版本pgjquery-railsturbolinks

回答

4

我認爲this comment從GitHub的問題有關rails_app_composer可能是這背後的原因的一部分:

如果gemfiles是使用絕對版本約束(等於運算符),誰克隆或產生的示例應用程序可以確定應用程序將始終以構建的方式運行。但我們不會盡快了解問題。使用樂觀版本約束條件,我們會在不兼容的gem版本發佈後儘快瞭解與寶石有關的問題。

例如,最近Devise版本2.2.0更改了默認密碼長度。所有示例應用程序都因爲數據庫初始化文件和測試中的示例密碼太短而中斷。在Devise 2.2.0發佈後的一天(或兩天),我意識到了這個問題,因爲有幾個GitHub問題已經打開。

現在考慮如果我將gemfiles鎖定爲Devise 2.1.0與絕對版本約束或Devise 2.1.x與悲觀版本約束。最終我會得到錯誤報告,但只有當有人好奇並決定嘗試更新版本的Devise時纔會這樣。錯誤報告將會到達,但是會慢慢地,而不是一團。當我看到一個孤立的錯誤報告時,很難判斷它是否是某人的特殊問題或應用程序故障。當我看到一大堆相關問題時,很容易猜測出現問題。

這很有意義,特別是在Turbolinks的情況下,因爲它是一項新功能。然而,作者goes on to say,最終他「從Gemfile中刪除了版本號」,所以你會這麼做。

相關問題