Як мені «активувати» іншу версію певного каменя?


85

Я хочу перемикатися між рейками 2.3.10 як "активний" камінь для моєї ОС, щоб я міг викликати його в командному рядку.

Чи можна це зробити? Я не використовую rvm. Можливо, пора починати.

Я спробував gem install rails --version=2.3.10, але це лише гарантує, що версія gem встановлена, а не вставлена /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

Використовуйте конкретні дорогоцінні камені для кожного проекту з наборами самоцвітів.

Якщо ви хочете подальший простір імен, ви можете встановити gemsets; каталоги, які містять конкретні дорогоцінні камені для конкретного проекту.

rvm gemset create myproject

тоді ви можете використовувати їх так:

rvm use 1.9.2@myproject

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

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

Встановлення дорогоцінних каменів у ваш gemset

Встановіть свої дорогоцінні камені у ваш gemset звичайним способом, використовуючи пакет, якщо ви використовуєте його:

bundle install

або просто використовуючи звичайний старий:

gem install mygem

Самоцвіти підуть у правильний набір коштовностей.

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

Можливо, ви також захочете перевірити rbenv, який виконує подібну роботу.


1
проблема rvm полягає (як ви вже згадували) в тому, що він обробляє рубінові версії та версії gem. rbenv просто обробляє рубінові версії і дозволяє пакету обробляти версії gem.
зухвалий

7

Ви можете використовувати RVM

Тоді ви також можете використовувати Bundler згодом, який чудово управляє залежностями gem.

У вашому Gemfile

gem "rails", "2.3.10"

і у вашій заявці

require 'rubygems'
require 'bundler/setup'

і готово.


На додаток до цього, якщо ви хочете, щоб деякі сценарії "бачили" лише версії, задекларовані у вашому Gemfile, запустіть їх як "bundle exec <ім'я сценарію>", наприкладbundle exec warble
rustyx

3

EDIT: Щойно побачив вашу згадку про RVM у дописі. Безумовно, шлях.

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

Ось посібник із встановлення: http://rvm.beginrescueend.com/rvm/install/

Після того, як ви все встанете, ви зможете побачити всі свої встановлені рубіни в командному рядку за допомогою rvm list, і rvm use ruby-head, наприклад , переключити за допомогою . RVM зберігає дорогоцінні камені на кожному рубіні окремо, що має допомогти у вирішенні вашого запитання.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.