Использовать несколько версий rubygems с rvm?
У меня есть два проекта на моем компьютере:
- старое приложение Rails 2.3, которое нуждается в rubygems 1.6 и не будет работать под rubygems 1.8;
- Новое приложение, которое нуждается в rubygems 1.8 и не будет работать под rubygems 1.6.
Каждый проект имеет свой собственный rvm gemset, но я не могу понять, как дать им разные версии rubygems:
- gem update --system [version] приводит к gem -версии, дающей тот же ответ в обоих;
- rvm gemset [версия] имеет тот же результат.
Как я могу запустить rubygems 1.6.2 в одном проекте и 1.8.11 в другом?
Чтобы уточнить, вот что я хочу сделать:
- В каталоге A есть .rvmrc с командами, которые выбирают gemset A и rubygems 1.6.2
- В каталоге B есть .rvmrc с командами, которые выбирают gemset B и rubygems last
- Одновременно открываются два сеанса терминала: один в каталоге A и другой в каталоге B
- Введите "gem -version" в каталог A и посмотрите "1.6.2"
- Введите "gem -version" в каталоге B и посмотрите "1.8.11"
Ответы
Ответ 1
Правильный способ - создать именованные (-n) установки рубина, который вы хотите установить, и назовите их в соответствии с нужной вам версией rubygem, например
rvm --install use 1.9.2-nrg186 && rvm rubygems 1.8.6 && gem --list
rvm --install use 1.9.2-nrg1810 && rvm rubygems 1.8.10 && gem --list
Причиной этого является то, что вы можете иметь только одну версию рубигемов в любое время. Это также связано с тем, что каждый рубин определяет зависимость от конкретной версии 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/ (см. "API CLI RubyGems" в нижней части страницы)
http://groups.google.com/group/rubyversionmanager/browse_thread/thread/e39fc7827d2d22e8