Как изменить версию Ruby, которую я использую - PullRequest
0 голосов
/ 04 марта 2019

мне нужно запустить 2.5.3.Я использую brew для управления моей установкой ruby ​​(так как я не мог заставить rvm работать на моей машине).Когда я запускаю

$ruby -v

, я получаю

ruby 2.3.7p456 (2018-03-28 revision 63024) [universal.x86_64-darwin18]

Однако, когда я пытаюсь обновить его, используя

brew upgrade ruby

, я получаю

Error: ruby 2.6.1 already installed

Почему это так несовместимо с тем, какую версию ruby ​​я действительно установил?

Ответы [ 2 ]

0 голосов
/ 04 марта 2019

Я хотел бы поблагодарить Вайбхава за его информативный ответ.Я еще не пытался установить rbenv, но я обязательно попробую.На данный момент я смог обойти эту проблему, не указав версию ruby ​​в моем файле gem.Это краткосрочный обходной путь, но он сработал!

0 голосов
/ 04 марта 2019

Вы должны использовать менеджер версий Ruby для управления несколькими версиями Ruby.Я предпочитаю использовать rbenv.Ниже приведены шаги по его установке на Mac (подробно объясняется, что делается и почему; если вам нужен ярлык, попробуйте выполнить все команды по порядку, но я все равно настаиваю на том, чтобы вы прочитали эти шаги).

rbenv

Прежде чем приступить к фактической установке, запомните следующие пункты:

  1. rbenv сама по себе не включает в себя возможность установки версий ruby.Изменяет только версию ruby ​​для каждого каталога.Для установки рубинов вам необходимо установить инструмент ruby-build (который является частью проекта rbenv).То же самое относится и к chruby, который использует другой инструмент для сборки ruby.
  2. ruby-build должен быть установлен как плагин для rbenv.
  3. В случае, если вам нужно узнать об инструментахподробно, вот ссылки для rbenv и ruby-build .
  4. Процедура установки для обоих инструментов (и много другой справки) доступна вREADME файлы для проектов.Обратитесь к ним, если у вас ничего не получится.

Установка rbenv

Выполните следующую команду, чтобы клонировать rbenv repo в каталог .rbenv в вашем домашнем каталоге.

$ git clone https://github.com/rbenv/rbenv.git ~/.rbenv

Ваша система по-прежнему не знает, где находится rbenv.Добавьте его к своему пути, выполнив:

$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile

Чтобы инициализировать rbenv, чтобы он мог помочь вам с изменением рубинов при смене каталогов, запустите:

~/.rbenv/bin/rbenv init

Это должно сказать вамчто-то вроде этого:

# Load rbenv automatically by appending
# the following to ~/.bash_profile:

eval "$(rbenv init -)"

Запустите это:

echo 'eval "$(rbenv init -)"' >> ~/.bash_profile

К этому моменту должен быть установлен rbenv.Когда вы запускаете rbenv в командной строке, вы должны получить что-то вроде этого:

$ rbenv
rbenv 1.1.1-39-g59785f6
Usage: rbenv <command> [<args>]

Some useful rbenv commands are:
   commands    List all available rbenv commands
   local       Set or show the local application-specific Ruby version
   global      Set or show the global Ruby version
   shell       Set or show the shell-specific Ruby version
   rehash      Rehash rbenv shims (run this after installing executables)
   version     Show the current Ruby version and its origin
   versions    List all Ruby versions available to rbenv
   which       Display the full path to an executable
   whence      List all Ruby versions that contain the given executable

See `rbenv help <command>' for information on a specific command.
For full documentation, see: https://github.com/rbenv/rbenv#readme

ПРИМЕЧАНИЕ : Если вы получаете предупреждение о том, что rbenv не установлен, просто запустите source ~/.bash_profile.Это перезапустит скрипт ~/.bash_profile и получит rbenv на вашем пути.После этого вы сможете без проблем запускать rbenv.

Обратите внимание, что rbenv пока не дает возможности устанавливать или удалять рубины.Для этого нам нужно установить ruby-build .

Установка ruby-build

Нам нужно добавить пакет ruby-build в качестве плагина rbenv, чтобы мы могли набратьrbenv install <ruby version> для установки рубинов.Все, что вам нужно сделать, это создать каталог плагинов и проверить git repo для ruby-build в каталоге плагинов.Выполните следующее:

$ mkdir -p "$(rbenv root)"/plugins
$ git clone https://github.com/rbenv/ruby-build.git "$(rbenv root)"/plugins/ruby-build

Проверка, установлены ли rbenv и ruby-build

Запустите rbenv без каких-либо аргументов на терминале, теперь должны появиться доступные команды установки и удаления.Примерно так:

$ rbenv
rbenv 1.1.1-39-g59785f6
Usage: rbenv <command> [<args>]

Some useful rbenv commands are:
   commands    List all available rbenv commands
   local       Set or show the local application-specific Ruby version
   global      Set or show the global Ruby version
   shell       Set or show the shell-specific Ruby version
   install     Install a Ruby version using ruby-build
   uninstall   Uninstall a specific Ruby version
   rehash      Rehash rbenv shims (run this after installing executables)
   version     Show the current Ruby version and its origin
   versions    List all Ruby versions available to rbenv
   which       Display the full path to an executable
   whence      List all Ruby versions that contain the given executable

See `rbenv help <command>' for information on a specific command.
For full documentation, see: https://github.com/rbenv/rbenv#readme

Если вы видите этот вывод, ваш rbenv установлен правильно.

Установка ruby ​​

Чтобы установить ruby ​​2.5.3, вы можете запустить (подождите, пока не запускайте его):

rbenv install 2.5.3

Должно появиться несколько строк, найдите время, а затем скажите, что установлена ​​версия 2.5.3.Однако существует проблема - если при установке происходит сбой, особенно во время компиляции, , иногда , терминал застревает, и на нем нет вывода.Похоже, что установка в течение длительного времени (навсегда).Чтобы получить больше информации о происходящем, запустите следующее:

rbenv install -f -v 2.5.3

Аргумент -f указывает rbenv принудительно установить данную версию.Так что, если он уже установлен, rbenv переустановит (в основном перезапишет) данную версию.Поэтому, если установка не удалась, -f удостоверится в установке.

Аргумент -v указывает rbenv выводить подробные сообщения.Таким образом, все, что делает ruby-build (включая процесс компиляции), будет показано вам.Не бойтесь слова сборник здесь.Обычно он нормально компилируется без проблем и не изменяет системный ruby ​​(тот, который установлен с sudo apt install ruby в Linux или тот, который вы получаете по умолчанию на macOS), независимо от того, успешно он или нет.

Тестовая установка

После успешного завершения установки вы можете запустить приведенную ниже команду, чтобы проверить, какие версии установлены (выходные данные включены в фрагмент кода ниже):

$ rbenv versions
  system
* 2.5.3 (set by /home/ubuntu/.rbenv/version)

Примечание : на Macу недавно установленного ruby ​​будет другой путь.

Тот, с * перед ним, тот, который активен прямо сейчас.Если вы запустите which ruby, вы должны получить путь с рубиновым шимом.Если вам интересно, прочитайте документацию rbenv, чтобы узнать, что такое прокладки , хотя вам не придется беспокоиться о них.

$ which ruby 
/home/ubuntu/.rbenv/shims/ruby

Настроить и забыть

rbenv - это крутая вещь, но продолжать писать rbenv shell 2.5.3 и rbenv shell 2.4.5 каждый раз - проблема.Вместо этого вы должны установить для каталога версию ruby ​​и забыть о rbenv.

Вы можете просто создать файл с именем .ruby-version, содержащий одну строку - номер версии ruby, который вы хотите использовать для всех скриптов ruby ​​в этом каталоге (и подкаталогах).Просто перейдите в нужный каталог и запустите:

echo "2.5.3" > .ruby-version

Все сценарии ruby ​​в этом каталоге и подкаталогах будут использовать версию 2.5.3.

...