Вы имеете дело с так называемыми проблемами зависимости.Задача Gemfile и Gemfile.lock состоит в том, чтобы гарантировать отсутствие проблем с зависимостями для приложения, и bundle install
справится с этим.Тем не менее, в Gemfile обычно устанавливаются версии для блокировки определенной основной версии выпуска, что может допускать незначительные обновления версий.Это будет выглядеть примерно так:
#Gemfile
gem 'rails', '4.2.10'
gem 'pg', '0.20.0'
gem 'after_party', '~> 1.10' #minor version updates will run here
gem 'kaminari', '~> 1.1'
ruby '2.3.6'
Это краткий пример.Теперь, когда вы запустите bundle install
, он убедится, что все совместимо с этими версиями.Во время работы bundle update
обновит только версии с ~>
до версии и обновит только второстепенные семантические версии, так как они не должны иметь критических изменений.
Итак, почему ваше приложение не работает?Ну, Gemfile должен был содержать рубиновую версию.RVM должен определить вашу версию ruby в файле .ruby-version
в базе вашего приложения rails и соответствовать версии в Gemfile.Если вам нужно обновить вашу версию ruby, то упаковщик поможет обеспечить совместимость всех ваших драгоценных камней с этой версией и друг с другом.Сначала вам нужно обновить версию ruby с помощью RVM, а затем установить ее в Gemfile.
Однако нет гарантии, что устаревшие гемы будут совместимы.В этом весь смысл их блокировки, чтобы вы знали, какие версии стабильны в данный момент времени.Обновления / обновления для драгоценных камней должны быть проверены на совместимость, которая иногда может быть проектом.
Также см. Rails Bundle, конфликты драгоценных камней, лучший способ их решения