Использовать несколько версий rubygems с rvm?

#ruby #rubygems #rvm

#ruby #rubygems #rvm

Вопрос:

На моем компьютере есть два проекта: — Старое приложение Rails 2.3, для которого требуется rubygems 1.6 и которое не будет работать под rubygems 1.8; — Более новое приложение, для которого требуется rubygems 1.8 и которое не будет работать под rubygems 1.6.

У каждого проекта есть свой собственный набор драгоценных камней rvm, но я не могу понять, как предоставить им разные версии rubygems:

  • gem update —system [version] приводит к тому, что gem —version выдает один и тот же ответ в обоих;
  • rvm gemset [version] имеет тот же результат.

Как я могу запустить rubygems 1.6.2 в одном проекте и 1.8.11 в другом?


Чтобы уточнить, вот что я хочу сделать:

  • В каталоге A есть .rvmrc с командами, которые выбирают gemset A и rubygems 1.6.2
  • В каталоге B есть .rvmrc с командами, которые выбирают gemset B и rubygems latest
  • Одновременно должны быть открыты два терминальных сеанса, один в каталоге A, а другой в каталоге B
  • Введите «gem —version» в каталоге A и посмотрите «1.6.2»
  • Введите «gem —version» в каталоге B и посмотрите «1.8.11»

Ответ №1:

Правильный способ — создать разные именованные (-n) установки ruby, которые вы хотите установить, и назвать их в соответствии с нужной версией rubygem, например

 rvm --install use 1.9.2-nrg186 amp;amp; rvm rubygems 1.8.6 amp;amp; gem --list
rvm --install use 1.9.2-nrg1810 amp;amp; rvm rubygems 1.8.10 amp;amp; gem --list
  

Причина этого в том, что в любой момент времени может быть активна только 1 версия rubygems. Это также связано с тем, что каждый ruby определяет зависимость от конкретной версии rubygems, с которой эта версия известна или ожидается для работы (независимо от того, может ли она работать с другой или нет).

Это ожидаемый способ справиться с несколькими требованиями rubygems и устранить потенциальные проблемы. См . https://gist.github.com/1273035 для конкретики, детализирующей это.

Ответ №2:

У RVM есть новая функция для этого:

используйте «rvm rubygems 1.6.2», чтобы выбрать эту версию rubygems.

  rvm rubygems 1.6.2
  

https://rvm.io/rubies/rubygems / (см.: «RubyGems CLI API» в нижней части страницы)

http://groups.google.com/group/rubyversionmanager/browse_thread/thread/e39fc7827d2d22e8

Комментарии:

1. Это не отвечает на вопрос, а именно, как использовать другую версию gem исполняемого файла, а не разные версии разных драгоценных камней.

2. просто понял это и изменил свой ответ

3. Выглядит хорошо. Протестировал это, и вы можете без проблем поместить это в .rvmrc файл.

4. @Tilo, большое спасибо, но rvm rubygems не позволяет мне открывать два терминальных сеанса одновременно с разными версиями. Я проверю именованные рубины, хотя — это может быть именно то, что мне нужно.

5. вы также должны использовать разные наборы драгоценных камней — поэтому в каждом сеансе терминала вы должны использовать разные наборы драгоценных камней и rubygems .. вы можете попробовать это? Если это не сработает, я думаю, что лучший способ заставить это работать — иметь отдельного пользователя UNIX для запуска вашего старого приложения Rails и иметь отдельную установку RVM для этого пользователя..