Заставить Bundler установить драгоценные камни, поддерживаемые локальной версией Ruby.

Есть ли способ установить последнюю поддерживаемую версию зависимости без ее указания?

У меня проблемы с гемом activesupport. Последняя версия (5.0.0.1) поддерживает Ruby >= 2.2.2. Если я укажу, что мне нужен драгоценный камень, подобный этому, '~> 4.2' Bundler попытается установить версию 5, даже если я использую Ruby 2.0. Указание точной версии 4.2.7.1 или установка максимальной версии '~> 4.2', '< 5' работает, за исключением случаев использования драгоценного камня с Rails 5.

Есть ли способ управлять версиями драгоценных камней на основе текущей версии Ruby?


person Sebastian    schedule 07.09.2016    source источник


Ответы (2)


Судя по всему, новая версия Bundler сделает это за вас автоматически. Я нашел этот комментарий от Андре Арко, в котором упоминается, что это уже включено в последней версии RC.

Я указал Ruby '2.0' в своем Gemfile, установил Bundler с gem install bundler --pre (он установил bundler-1.13.0.rc.2) и bundle install успешно установил activesupport 4.2.7.1.

С Bundler 1.12.5 я получал следующую ошибку:

An error occurred while installing activesupport (5.0.0.1), and Bundler cannot continue.
person Sebastian    schedule 07.09.2016

Обратите внимание, что хотя это немного больше ручного труда, вы также можете включить логику в свои Gemfiles:

if RUBY_VERSION <  "2.2.2"
  gem "activesupport", "4.2.7.1"
else
  gem "activesupport", "5.0.0.1"  
end
person Ginty    schedule 09.09.2016
comment
Это зависимость от драгоценных камней, поэтому ее необходимо указать в спецификации драгоценных камней. - person Sebastian; 09.09.2016