Aktualizacja: od tego czasu napisałem bardzo szczegółowe wyjaśnienie różnych sposobów instalowania klejnotów Ruby na komputerze Mac. Moja pierwotna rekomendacja dotycząca używania skryptu jest nadal aktualna, ale mój artykuł jest bardziej szczegółowy: https://www.moncefbelyamani.com/the-definitive-guide-to-installing-ruby-gems-on-a-mac/
Masz rację, że macOS nie pozwoli ci niczego zmienić w wersji Ruby, która jest zainstalowana na komputerze Mac. Jednak możliwe jest zainstalowanie klejnotów, tak jak bundler
przy użyciu oddzielnej wersji Rubiego, która nie koliduje z wersją dostarczoną przez Apple.
Używanie sudo
do instalowania klejnotów lub zmienianie uprawnień do plików systemowych i katalogów jest zdecydowanie odradzane, nawet jeśli wiesz, co robisz. Czy możemy przestać udzielać tej złej rady? Oto szczegółowy artykuł, który napisałem, pokazujący, jak sudo gem install
wyczyścić komputer: https://www.moncefbelyamani.com/why-you-should-never-use-sudo-to-install-ruby-gems/
Rozwiązanie obejmuje dwa główne kroki:
- Zainstaluj oddzielną wersję Rubiego, która nie koliduje z wersją dostarczoną z komputerem Mac.
- Zaktualizuj swój
PATH
tak, aby lokalizacja nowej wersji Rubiego była pierwsza w pliku PATH
. Niektóre narzędzia robią to automatycznie. Jeśli nie znasz PATH
i nie wiesz, jak to działa, przeczytaj mój przewodnik .
Istnieje kilka sposobów instalacji Rubiego na komputerze Mac. Najlepszym sposobem, który polecam i chciałbym, aby był bardziej rozpowszechniony w różnych instrukcjach instalacji, jest użycie zautomatyzowanego skryptu , który skonfiguruje dla Ciebie odpowiednie środowisko Ruby. To drastycznie zmniejsza ryzyko wystąpienia błędu z powodu nieodpowiednich instrukcji, które zmuszają użytkownika do ręcznego wykonywania wielu rzeczy i pozostawiania im samodzielnego rozwiązania wszystkich niezbędnych kroków.
Inną drogą, którą możesz wybrać, jest spędzenie dodatkowego czasu na robieniu wszystkiego ręcznie i nadzieja na najlepsze. Najpierw będziesz chciał zainstalować Homebrew , który instaluje wstępnie wymagane narzędzia wiersza poleceń i ułatwia instalację innych niezbędnych narzędzi.
Następnie dwa najłatwiejsze sposoby zainstalowania oddzielnej wersji Rubiego to:
Jeśli chcesz mieć możliwość łatwego przełączania się między wieloma wersjami Rubiego [ZALECANE]
Wybierz jedną z czterech opcji:
- chruby i ruby-install - moje osobiste rekomendacje i te, które są automatycznie instalowane przez mój skrypt. Można je zainstalować z Homebrew:
brew install chruby ruby-install
Jeśli wybrałeś chruby
i ruby-install
, możesz zainstalować najnowszą wersję Rubiego w następujący sposób:
ruby-install ruby
Po zainstalowaniu wszystkiego i skonfigurowaniu .zshrc
lub .bash_profile
zgodnie z instrukcjami z powyższych narzędzi, zamknij i uruchom ponownie Terminal, a następnie przełącz się na żądaną wersję Rubiego. W przypadku chruby
byłoby to coś takiego:
chruby 2.7.2
To, czy musisz skonfigurować, .zshrc
czy .bash_profile
zależy od używanej powłoki. Jeśli nie masz pewności, przeczytaj ten przewodnik: https://www.moncefbelyamani.com/which-shell-am-i-using-how-can-i-switch/
Jeśli wiesz na pewno, że nie potrzebujesz więcej niż jednej wersji Ruby w tym samym czasie (oprócz tej, która została dostarczona z macOS)
- Zainstaluj Ruby z Homebrew:
brew install ruby
Następnie zaktualizuj PATH
, uruchamiając (zastąp 2.7.0
nowo zainstalowaną wersją):
echo 'export PATH="/usr/local/opt/ruby/bin:/usr/local/lib/ruby/gems/2.7.0/bin:$PATH"' >> ~/.zshrc
Następnie „odśwież” powłokę, aby zmiany odniosły skutek:
source ~/.zshrc
Możesz też otworzyć nową kartę terminala lub zamknąć i ponownie uruchomić Terminal.
Wymienić .zshrc
ze .bash_profile
jeśli używasz bash. Jeśli nie masz pewności, której powłoki używasz, przeczytaj ten przewodnik: https://www.moncefbelyamani.com/which-shell-am-i-using-how-can-i-switch/
Aby sprawdzić, czy używasz niesystemowej wersji Rubiego, możesz uruchomić następujące polecenia:
which ruby
To powinno być coś innego niż /usr/bin/ruby
ruby -v
Powinno to być coś innego niż 2.6.3, jeśli korzystasz z macOS Catalina. Na dzień dzisiejszy 2.7.2 jest najnowszą wersją Rubiego.
Po zainstalowaniu tej nowej wersji Rubiego możesz teraz zainstalować pakiet (lub dowolny inny klejnot):
gem install bundler
rbenv
musisz to zrobićecho 'eval "$(rbenv init -)"' >> ~/.bash_profile
. Źródłosudo chown -R $(whoami) $(brew --prefix)/*
. Zobacz ten wątek po więcej informacjichruby
zamiast tego, zdecydowanie polecam użycie skryptu, który ustawia wszystko za Ciebie, takiego jak ten: github.com/monfresh/install-ruby-on-macos . Przed uruchomieniem tego skryptu należy najpierw odinstalować rbenv: github.com/rbenv/rbenv#uninstalling-rbenvJeśli nie chcesz uruchamiać,
sudo
zainstaluj Rubiego używając homebrewMożesz dodać
export GEM_HOME="$HOME/.gem"
do swojego~/.bash_profile
lub.zshrc
jeśli używasz zshUwaga: RubyGems przechowuje stare wersje klejnotów, więc po aktualizacji możesz je wyczyścić:
źródło
Rails is not currently installed on this system. To get the latest version, simply type: $ sudo gem install rails You can then rerun your "rails" command
rails
polecenie. Ostatnie dwa polecenia, które mam, nie uruchamiająrails
polecenia. Spróbuj otworzyć nowy terminal poza swoim projektem, a następnie skopiuj ostatnie dwa wiersze mojej odpowiedzi jeden po drugim.source ~/. zshrc
(lub~/.bash_profile
)Pracowałem dla mnie przy użyciu parametru
--user-install
uruchamiającego następujące polecenie:Potem zaczął go pobierać i instalować.
Edytować
Był jeden klejnot, którego nadal nie mogłem zainstalować (wymagał on nagłówków Ruby.h zestawu deweloperskiego Ruby lub czegoś podobnego), potem wypróbowałem różne menedżery wersji, ale jakoś to nadal nie działało, jak stwierdzono w dokumentacji, jak po prostu zainstalować i przełączyć (po prostu nie zmienił wersji). Następnie usunąłem wszystkie zainstalowane menedżery wersji, a później zainstalowałem
brew install ruby
najnowszą wersję, a także ustawiłem zmienną PATH. (Będzie wspomniane po instalacji rubinu z naparu), który zadziałał.źródło
Ogólnie zaleca się korzystanie z menedżera wersji, takiego jak
rbenv
lubrvm
. W przeciwnym razie zainstalowane klejnoty będą dostępne tak jakroot
dla innych użytkowników.Jeśli wiesz, co robisz, możesz użyć
sudo gem install
.źródło
Napotkałem ten sam problem po zainstalowaniu macOS Catalina. Spróbowałem poniżej polecenia i jego działania.
źródło
Uruchom to
Postępuj zgodnie z instrukcjami (w moim przypadku dodaj do ~ / .zshrc );)
Ważne: zmiany zaczną obowiązywać dopiero po ponownym uruchomieniu konsoli. Dwie opcje
source <modified file>
źródło
.bash_profile
over to.zshrc
sudo
! Jeśli nie używasz ZSH, możesz dodać to do swojego.profile
lub.bash_profile
. Świetnym sposobem sprawdzenia, czy to działa, jest użyciewhich ruby
, powinno wskazywać ścieżkę, która marbenv
i nie ma/usr/local/ruby
.Jeśli zainstalowałeś Ruby osobno i zainstalowałeś go używając rbenv / rvm, budler może wskazywać na inne wersje.
próbować
i
oba powinny wskazywać na tę samą wersję. sprawdź, czy zainstalowałeś Ruby używając rbenv / rvm, jeśli tak, usuń wersję Ruby, którą zainstalowałeś oddzielnie.
Aby gem działał, musisz wywołać rbenv,
i
Nie jestem pewien, jak działa RVM. Daj mi znać, czy to działa.
źródło
Rozwiązanie dla komputerów Mac
Zainstaluj / zaktualizuj RVM za pomocą ostatniej wersji Ruby
\curl -sSL https://get.rvm.io | bash -s stable
Zainstaluj pakiet
gem install bundler
po tym dwa polecenia
(sudo) gem install ....
zaczęły działaćźródło
rvm use <version>
Należy użyć innej instalacji rubinu. W tym celu używam rbenv .
Disclamer: Nie jestem osobą rubinową. To zadziałało dla mnie i jeśli jesteś ekspertem od rubinów i widzisz rzeczy do zmiany w tej odpowiedzi, proszę, napisz lub skomentuj!
źródło
To działało dla mnie na Macu
źródło
Używam Mojave z
rbenv
, to rozwiązanie działa dla mnie:Dodaj tę linię do pliku:
źródło
Problemy, które miałem: - Nie masz uprawnień do zapisu w katalogu /Library/Ruby/Gems/2.6.0.
Rozwiązanie zadziałało dla mnie: sudo gem install rails -v 6.0.0
źródło
Po prostu
sudo gem uninstall cocoapods
działało dla mnie.źródło