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

Кажется, это должно быть очевидно, но я не смог найти способ сделать это.

Моя основная проблема заключается в следующем: у меня установлен Ruby 1.8.7 в системе Scientific Linux 6 (из базового репозитория). Я пытаюсь установить некоторые драгоценные камни с помощью gem install , но я сталкиваюсь с большим количеством драгоценных камней, для которых требуется Ruby 1.9 или выше.

Я могу указать отдельные версии гемов с помощью - v , но установка gem install , похоже, всегда выбирает самую высокую версию, доступную для любых зависимостей gem, поэтому даже если я ограничу версию для нужного gem, моя установка все равно завершится ошибкой из-за одного из зависимости потребуют Ruby 1.9. Деревья зависимостей для некоторых драгоценных камней, которые мне нужны, глубокие и широкие; Потребовалось бы много времени, чтобы вручную определить, какая версия каждой зависимости мне нужна, а затем вручную установить каждый требуемый гем, прежде чем я смогу перейти к нужной мне. (Это то, что должно решить управление зависимостями.)

Итак: есть ли способ сказать Ruby: «Установите gem foo , используя только драгоценные камни, которые будут работать с установленной в данный момент версией Ruby "? (Или даже «Установить версию xyz gem foo , используя только драгоценные камни, которые будут работать с установленной в данный момент версией Ruby»?)

Как я уже упоминал, случается использовать Ruby 1.8.7 на Scientific Linux 6, но я сомневаюсь, что какое-либо решение будет зависеть от этой платформы.

0
задан 26 September 2016 в 17:27
2 ответа

Не используйте системный рубин для своих собственных программ. Его цель - обслуживать системные приложения, написанные на Ruby, и он поддерживается только Red Hat для этих приложений.

Вместо этого используйте диспетчер версий Ruby, такой как rvm или rbenv, с помощью которого вы можете запустить текущую версию Ruby. и любые драгоценные камни, которые могут вам понадобиться для ваших собственных программ.

Если вам нужна поддержка поставщика, вы также можете использовать версию Ruby из Red Hat Software Collections.

1
ответ дан 4 December 2019 в 13:38

Использование Bundler

Нет "простого" способа сделать это, но есть один практический вариант - использовать Bundler для управления вашими драгоценными камнями. Один комментарий к Github рекомендует создать гем со строгими требованиями к версии на выбранном вами Ruby, а затем позволить Bundler обрабатывать оставшиеся зависимости.

Я не уверен, что это будет работать во всех дел. Некоторые драгоценные камни, особенно более старые, могут не указывать необязательный параметр required_ruby_version , и поэтому могут разрешаться как устанавливаемые. Однако, когда вы сталкиваетесь с такими драгоценными камнями, вы можете вручную закрепить нужные вам версии в Gemfile, используя нотацию Bundler ограничение версии .

1
ответ дан 4 December 2019 в 13:38

Теги

Похожие вопросы