Оновлення: З тих пір я написав дуже детальне пояснення різних способів встановлення каменів Ruby на Mac. Моя оригінальна рекомендація використовувати скрипт все ще існує, але моя стаття йде більш докладно: https://www.moncefbelyamani.com/the-definitive-guide-to-installing-ruby-gems-on-a-mac/
Ви маєте рацію, що macOS не дозволить вам нічого змінювати за допомогою версії Ruby, яка постачається з вашим Mac. Однак можна встановити дорогоцінні камені, як-от bundler
використання окремої версії Ruby, яка не заважає тій, яку надає Apple.
Використовувати sudo
для встановлення самоцвітів або змінювати дозволи системних файлів та каталогів настійно не рекомендується, навіть якщо ви знаєте, що робите. Чи можемо ми припинити надавати цю погану пораду? Ось детальна стаття, яку я написав, де показано, як sudo gem install
можна знищити комп’ютер: https://www.moncefbelyamani.com/why-you-should-never-use-sudo-to-install-ruby-gems/
Рішення передбачає два основних етапи:
- Встановіть окрему версію Ruby, яка не заважає версії, яка постачається з вашим Mac.
- Оновіть
PATH
так, щоб нова версія Ruby була першою в PATH
. Деякі інструменти роблять це автоматично за вас. Якщо ви не знайомі з PATH
і як це працює, прочитайте моє керівництво .
Існує кілька способів встановити Ruby на Mac. Найкращий спосіб, який я рекомендую і хотів би, щоб його поширення було більш поширеним в різних інструкціях з встановлення, - це використання автоматизованого сценарію, який створить для вас належне середовище Ruby. Це різко знижує ймовірність натрапити на помилку через неадекватні вказівки, які змушують користувача робити купу речей вручну і залишаючи за ними самостійно розгадати всі необхідні кроки.
Інший шлях, яким можна піти, - витратити зайвий час, роблячи все вручну і сподіваючись на краще. По-перше, ви захочете встановити Homebrew , який встановлює необхідні інструменти командного рядка та полегшує встановлення інших необхідних інструментів.
Тоді два найпростіші способи встановити окрему версію Ruby:
Якщо вам потрібна гнучкість легкого переключення між багатьма версіями Ruby [РЕКОМЕНДОВАНО]
Виберіть один із цих чотирьох варіантів:
- chruby та ruby-install - мої особисті рекомендації та ті, які автоматично встановлюються моїм сценарієм. Їх можна встановити за допомогою Homebrew:
brew install chruby ruby-install
Якщо ви вибрали chruby
і ruby-install
, ви можете встановити останню версію Ruby таким чином:
ruby-install ruby
Після того, як ви встановили все і налаштували свій .zshrc
або .bash_profile
відповідно до вказівок з наведених вище інструментів, вийдіть і перезапустіть Terminal, а потім перейдіть на потрібну версію Ruby. У випадку chruby
, це було б приблизно так:
chruby 2.7.2
Чи потрібно вам налаштовувати, .zshrc
чи .bash_profile
залежить від того, яку оболонку ви використовуєте. Якщо ви не впевнені, прочитайте цей посібник: https://www.moncefbelyamani.com/which-shell-am-i-using-how-can-i-switch/
Якщо ви точно знаєте, що вам не потрібна більше однієї версії Ruby одночасно (крім тієї, що поставляється з macOS)
- Встановіть ruby за допомогою Homebrew:
brew install ruby
Потім оновіть PATH
, запустивши (замініть 2.7.0
на нещодавно встановлену версію):
echo 'export PATH="/usr/local/opt/ruby/bin:/usr/local/lib/ruby/gems/2.7.0/bin:$PATH"' >> ~/.zshrc
Потім "оновіть" свою оболонку, щоб ці зміни набрали чинності:
source ~/.zshrc
Або ви можете відкрити нову вкладку терміналу, або вийти і перезапустити термінал.
Замініть .zshrc
на, .bash_profile
якщо ви використовуєте Bash. Якщо ви не впевнені, яку оболонку ви використовуєте, прочитайте цей посібник: https://www.moncefbelyamani.com/which-shell-am-i-using-how-can-i-switch/
Щоб перевірити, чи використовуєте ви зараз несистемну версію Ruby, можна виконати такі команди:
which ruby
Це має бути щось інше, ніж /usr/bin/ruby
ruby -v
Якщо ви використовуєте macOS Catalina, це має бути щось інше, ніж 2.6.3. На сьогоднішній день 2.7.2 - це остання версія Ruby.
Після встановлення нової версії Ruby тепер ви можете встановити пакет (або будь-який інший камінь):
gem install bundler
rbenv
вам доведеться це зробитиecho 'eval "$(rbenv init -)"' >> ~/.bash_profile
. Джерело