Как използвате множество версии на релси с rbenv?

Възможно ли е да се използват множество версии на релси с помощта на rbenv (напр. 2.3 и 3.1)? Това беше лесно с gemsets в rvm, но се чудя какъв е най-добрият начин да го направя сега, когато преминах към rbenv (също така търся начин да го направя без rbenv-gemset).


person aciniglio    schedule 16.01.2012    source източник
comment
Свързан въпрос: stackoverflow.com/questions/9771172/ ( Пропуснах този въпрос, когато зададох моя, може би поради печатната грешка на rbvenv)   -  person Noach Magedman    schedule 04.06.2015


Отговори (2)


не съм сигурен дали имате отговор на това, но реших да предложа това, което направих, и изглежда, че работи.

Така че след като инсталирате rbenv и го използвате, за да инсталирате конкретна версия на ruby, можете да инсталирате множество версии на rails за този ruby.

СТЪПКА 1. Инсталирайте каквато и да е версия(и) на релси, които желаете за руби версия

% RBENV_VERSION=1.9.2-p290 rbenv exec gem install rails --version 3.0.11

Като използвате префикса "RBENV_VERSION=1.9.2-p290" във вашия команден ред, вие указвате за кой ruby ​​rbenv трябва да се занимава.

След това, следвайки това с командата "rbenv exec", можете да инсталирате релси. Просто използвайте флага за версия, както в примера, за да посочите коя версия искате. Не съм сигурен дали можете да инсталирате няколко версии наведнъж, но аз просто изпълнявам тази команда толкова пъти, колкото е необходимо, за да инсталирам всяка версия, която искам.

Забележка: Всичко това ще се управлява във вашата директория rbenv, така че е напълно безопасно и ограничено.

СТЪПКА 2. Създайте нов rails проект, като посочите желаната от вас версия на rails.

% RBENV_VERSION=1.9.2-p290 rbenv exec rails _3.0.11_ new my_project

СТЪПКА 3. Не забравяйте да влезете в този проект и да зададете локалната версия на rbenv ruby.

% cd my_project
% rbenv local 1.9.2-p290

Сега, ако искате да изтриете този проект, просто го изтрийте както обикновено.

Ако искате да изтриете/управлявате версия на rails от rbenv gems, можете да използвате обикновени gem команди, просто добавете префикс към командния ред с:

% RBENV_VERSION=1.9.2-p290 rbenv exec gem {some command}

И разбира се, можете да изтриете пълна ruby ​​версия и всички нейни подложки и т.н., които се управляват в rbenv доста лесно. Харесва ми колко самостоятелно е всичко.

Надявам се това да помогне.

За справка, това е доста добра разходка през поне някои от тези неща:

http://ascarter.net/2011/09/25/modern-ruby-development.html

person Nathan    schedule 11.03.2012
comment
благодаря за този отговор, но се чудя не можете ли просто да създадете rails проект и да посочите rails версията вътре в проекта и след това да направите пакетно инсталиране? можете ли да обясните как вашият отговор би бил по-добро решение? Не съм толкова опитен, така че би било полезно да знам. Благодаря - person Leahcim; 03.01.2013
comment
между другото, след като създадете проекта с този префикс, използвате ли този префикс за всяка команда, която правите в проекта? префикс + инсталиране на пакет? префикс + скъпоценен камък инсталиране {име на скъпоценен камък} и т.н.? - person Leahcim; 03.01.2013
comment
Не, не е необходимо да продължите да използвате префикса. Отговорът ми тук беше малко излишен, защото RVM е пълен пакетен мениджър (ruby + rails версия) и се опитвах да илюстрирам начин да направя нещо подобно с rbenv, който за разлика от RVM е главно ruby ​​мениджър. OP питаше за използване на множество версии на релси с rbenv, така че описвах как да инсталирам конкретна версия на релси в конкретна версия на ruby ​​(от която можете да инсталирате няколко) и след това да изберете коя да използвате, когато създавате проект с този ruby версия. Това ще ви даде нещо подобно на RVM. - person Nathan; 10.01.2013
comment
Що се отнася до инсталирането по подразбиране и след това да го промените в Gemfile... Предполагам, че можете да направите това. Според мен конфигурациите и другите настройки във версията на релсите се различават достатъчно, така че просто изглежда по-чисто да посочите версията, която искате да инсталирате (ако приемем, че трябва да се суете с версиите на първо място). - person Nathan; 10.01.2013
comment
Стъпка 1 не работи за мен, получих следното. ГРЕШКА: Грешка при инсталиране на релси: релси от релси са в конфликт с инсталиран изпълним файл от railties - person Lawrence DeSouza; 22.01.2014

Има плъгин rbenv, наречен rbenv-gemset, който трябва да се държи подобно на командата rvm gemset, но тъй като rbenv никога не е било предназначено да работи по този начин, не съм го пробвал.

Обикновено управлявам версии на Rails с Bundler, както Нейтън предложи в коментарите на един от другите отговори. Създавам Gemfile с желаната от мен версия на Rails, стартирам bundle install, създавам Rails приложението, оставям го да замени Gemfile и оставям Bundler да поеме:

mkdir my-rails-app
cd my-rails-app
echo "source 'https://rubygems.org'" > Gemfile
echo "gem 'rails', '3.2.17'" >> Gemfile
bundle install

bundle exec rails new . --force --skip-bundle
bundle update

Ако искате повече подробности, написах статия в моя блог за това.

Дано помогне!

person Michael Trojanek    schedule 02.05.2014
comment
това е хубава статия. Благодарение на bundler - person onmyway133; 23.03.2016
comment
това беше решението, което търсех +1 - person Qchmqs; 08.01.2017