Назад | Перейти на главную страницу

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

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

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

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

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

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

Использовать Bundler

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

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

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

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

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