Как вы используете несколько версий рельсов с rbenv?

Можно ли использовать несколько версий рельсов с помощью rbenv (например, 2.3 и 3.1)? Это было легко с наборами драгоценных камней в 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. Установите любую версию (или версии) rails для каждой версии ruby

% 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, вы можете использовать обычные команды 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. ОП спрашивал об использовании нескольких версий rails с rbenv, поэтому я описывал, как установить конкретную версию rails в конкретную версию ruby ​​(из которых вы можете установить несколько), а затем выбрать, какую из них использовать при создании проекта с этим ruby. версия. Это даст вам что-то похожее на RVM. - person Nathan; 10.01.2013
comment
Что касается установки по умолчанию, а затем изменения его в Gemfile... Я полагаю, вы можете это сделать. На мой взгляд, конфигурации и другие настройки в разных версиях rails достаточно различаются, поэтому кажется более правильным указать версию, которую вы хотите установить (при условии, что вам нужно возиться с версиями в первую очередь). - person Nathan; 10.01.2013
comment
Шаг 1 не сработал для меня, я получил следующее. ОШИБКА: Ошибка при установке рельсов: рельсы из рельсов конфликтуют с установленным исполняемым файлом из рельсов - 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
это хорошая статья. Благодаря упаковщику - person onmyway133; 23.03.2016
comment
это было решение, которое я искал +1 - person Qchmqs; 08.01.2017