Оновлення: З тих пір я написав дуже детальне пояснення різних способів встановлення каменів 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. Джерело