Прежде всего, ничего, что вы говорите или делаете, не будет звучать глупо. Мы все были новичками в какой-то момент.
Причина, по которой ваш Mac не распознает версию Ruby, установленную Homebrew, заключается в том, что по умолчанию компьютер ищет исполняемые программы только в определенных каталогах. Список каталогов и порядок, в котором их ищет компьютер, называется PATH
. Если вы введете echo $PATH
в Terminal, вы увидите список каталогов, разделенных двоеточием. По умолчанию в новой установке MacOS список выглядит так:
/usr/bin:/bin:/usr/sbin:/sbin
Во время установки Homebrew создается новый каталог /usr/local/bin
и добавляется в начало PATH
. Однако когда вы устанавливаете Ruby с помощью Homebrew, Ruby устанавливается в /usr/local/opt/ruby/bin
, который не добавляется в PATH
автоматически. Я знаю это, потому что это упоминается Homebrew в конце установки Ruby. По общему признанию, сообщение, возможно, не имеет большого значения для новичка:
If you need to have ruby first in your PATH run:
echo 'export PATH="/usr/local/opt/ruby/bin:$PATH"' >> ~/.bash_profile
Поскольку версия Ruby для Homebrew отсутствовала в вашем PATH
, когда вы ввели gem install [some gem]
, компьютер сначала искал программу под названием gem
в /usr/local/bin
и не нашел ее, а затем искал он находится в /usr/bin
и нашел его, потому что именно там установлен системный gem
(версия gem
, поставляемая с macOS).
Если вы хотите узнать, какая версия конкретной программы используется в текущем сеансе терминала, вы можете использовать команду which
. Например:
which ruby
which gem
Это скажет вам местоположение программы, где компьютер впервые нашел ее.
Еще одна команда, которую вы можете использовать, чтобы увидеть, используете ли вы правильную версию Ruby:
ruby -v
Если вы запустили эту команду:
echo 'export PATH="/usr/local/opt/ruby/bin:$PATH"' >> ~/.bash_profile
и затем открыли новое окно терминала или вкладку (или запустили source ~/.bash_profile
), чтобы изменения вступили в силу, каталог Homebrew Ruby был бы первым в вашем PATH
, что означает, что ваш компьютер сначала искал бы там gem
, и он бы использовал версию Ruby Homebrew.
Чтобы объяснить команду выше, она берет все между одинарными кавычками и добавляет ее (>>
) в файл с именем .bash_profile
в корневом каталоге вашего пользователя (~/
). Каждый раз, когда вы открываете новое окно или вкладку терминала, читается .bash_profile
, и все, что там определено, используется.
Точно так же причина, по которой RVM не может распознать, что Ruby 2.6.1 был установлен Homebrew, заключается в том, что RVM и Homebrew устанавливают Ruby в двух разных местах, которые не знают друг о друге. Когда вы впервые установили RVM, была установлена версия 2.6.0. Я не уверен, почему он не установил 2.6.1, но я помню, что в прошлом, когда я использовал RVM, он не всегда устанавливал последнюю версию. Лично я предпочитаю chruby
и ruby-install
для управления версиями Ruby.
Хорошая особенность таких инструментов, как RVM, chruby и rbenv, заключается в том, что они позволяют устанавливать несколько версий Ruby на одном компьютере и легко переключаться с одной на другую. Homebrew, с другой стороны, может одновременно управлять только одной версией Ruby.