#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 для этого пользователя..