Как «активировать» другую версию определенного камня?

85

Я хочу переключаться между rails 2.3.10 как «активным» гемом для моей ОС, чтобы я мог вызывать его из командной строки.

Можно ли это сделать? Я не использую rvm. Может пора начинать.

Я пробовал gem install rails --version=2.3.10, но это просто гарантирует, что версия гема установлена, а не вставляет ее /usr/bin/rails.

(Я уже использую упаковщик для своих приложений, но до сих пор не нуждался в точном контроле над драгоценными камнями на уровне ОС)

Джон Башир
источник

Ответы:

154

Если ваша проблема заключается в запуске двоичных файлов определенной версии, тогда:

rails --version # => the latest version
rails _2.3.10_ --version # => Rails 2.3.10

Этот шаблон ( gem-binary _gem-version_) работает для любого двоичного файла драгоценного камня.

Надеюсь, это поможет.

Даниил Вартанов
источник
1
О, это только что спасло меня от долгих выходных в офисе, спасибо!
Лахлан МакДи.
2
Кажется, это не сработает для всех из них: rackup _1.4.3_ --version<br> Rack 1.1 (Release: 1.4)
Хлоя
1
Rackup печатает только релизную версию (см. Rack.versionи Rack.release github.com/rack/rack/blob/master/lib/rack.rb ). Попробуй gem install rack --version=1.3 && rackup _1.3.0_ --version, напечатаетRack 1.1 (Release: 1.3)
Даниил Вартанов
И на всякий случай вот как это работает:which rackup | xargs cat
Даниил Вартанов
Спасибо, Даниэль, очень полезно
маршрут
12

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

RVM позволяет управлять разными версиями Ruby и Gems. Вы можете установить версию ruby, например,

rvm install 1.9.2

Затем вы можете использовать его, используя:

rvm use 1.9.2

Используйте определенные драгоценные камни для каждого проекта с наборами драгоценных камней.

Если вам нужно дополнительное пространство имен, вы можете настроить гемсеты; каталоги, которые будут содержать определенные драгоценные камни для конкретного проекта.

rvm gemset create myproject

тогда вы можете использовать их так:

rvm use 1.9.2@myproject

Автоматизация

Чтобы автоматизировать процесс переключения гемов, добавьте файлы .ruby-version и .ruby-gemset в корень вашего проекта. Вставьте версию Ruby и имя гемсета, который вы хотите использовать внутри них, и RVM выберет правильный гемсет, когда вы войдете в каталог своего проекта.

Установка драгоценных камней в ваш гемсет

Установите свои драгоценные камни в свой гемсет обычным способом, используя упаковщик, если вы его используете:

bundle install

или просто используя обычный старый:

gem install mygem

Драгоценные камни войдут в правильный набор драгоценных камней.

Альтернативы RVM

Вы также можете попробовать rbenv, который выполняет аналогичную работу.

сверхсветовой
источник
1
проблема с rvm (как вы упомянули) в том, что он обрабатывает рубиновые версии и версии гемов. rbenv просто обрабатывает рубиновые версии и позволяет сборщику обрабатывать версии гемов.
неприятный
7

Вы можете использовать RVM

После этого вы также можете использовать Bundler , который отлично управляет зависимостями гемов .

В твоем Gemfile

gem "rails", "2.3.10"

и в вашем приложении

require 'rubygems'
require 'bundler/setup'

и вы сделали.

Чубас
источник
В дополнение к этому, если вы хотите, чтобы некоторые скрипты "видели" только версии, объявленные в вашем Gemfile, запускайте их как "bundle exec <script-name>", напримерbundle exec warble
rustyx 05
3

РЕДАКТИРОВАТЬ: только что увидел упоминание вашего RVM в сообщении. Определенно лучший способ.

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

Вот руководство по установке: http://rvm.beginrescueend.com/rvm/install/

После того, как вы все встали, вы можете увидеть все установленные вами Ruby в командной строке с помощью rvm listи rvm use ruby-head, например , переключиться с помощью . RVM хранит драгоценные камни на каждом рубине отдельно, что должно помочь с вашим вопросом.

Сэм Ричи
источник