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


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.