2014-01-21 2 views
9

Когда я генерировать новый Rails 4 проекта, то Gemfile выглядит следующим образом:Почему рельсы не блокируют определенные драгоценные камни для конкретной версии?

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 не запирать версии для pg, jquery-rails и turbolinks?

ответ

4

Я думаю this comment от вопроса GitHub о rails_app_composer может быть частью рассуждения позади этого:

Если gemfiles были использовать Absolute Version Constraint (Равный оператор), любой, кто клонированный или сгенерированный пример приложение может быть уверенным, что приложение всегда будет работать как построенное. Но мы не будем так быстро узнавать о проблемах. С Optimistic Version Constraints мы узнаем о проблемах с драгоценными камнями вскоре после выпуска несовместимых версий драгоценных камней.

Например, недавно Devise версии 2.2.0 изменила длину пароля по умолчанию. Все примеры приложений сломались, потому что примеры паролей в файлах инициализации базы данных и тестах были слишком короткими. В течение дня (или двух) после выпуска Devise 2.2.0 я знал об этой проблеме, потому что были выпущены несколько выпусков GitHub.

Теперь рассмотрим, заблокировал ли я gemfiles Devise 2.1.0 с абсолютной версией Constraint или Devise 2.1.x с Пессимистическим ограничением версии. В конце концов я получаю отчеты об ошибках, но только тогда, когда кому-то стало любопытно, и решил попробовать новые версии Devise. Сообщения об ошибках прибудут, но медленно, а не как рой. Когда я вижу изолированный отчет об ошибке, трудно понять, является ли это своеобразной проблемой или неудачей приложения. Когда я вижу рой связанных вопросов, легко догадаться, что что-то не так.

Это имеет смысл, особенно в случае Turbolinks, поскольку это новая функция. Автор goes on to say, однако, что в конце концов он «удалил номера версий из Gemfile», поэтому сделайте так, как хотите.

Смежные вопросы