Niedawno zaktualizowałem Ruby do wersji 2.3.1, używając ruby-install
. Używam chruby
jako mojego przełącznika Ruby.
Zacząłem widzieć to ostrzeżenie na moim terminalu:
Ignoring bcrypt-3.1.11 because its extensions are not built. Try: gem pristine bcrypt --version 3.1.11
Ignoring bcrypt-3.1.10 because its extensions are not built. Try: gem pristine bcrypt --version 3.1.10
Ignoring binding_of_caller-0.7.2 because its extensions are not built. Try: gem pristine binding_of_caller --version 0.7.2
Ignoring byebug-9.0.5 because its extensions are not built. Try: gem pristine byebug --version 9.0.5
Ignoring byebug-5.0.0 because its extensions are not built. Try: gem pristine byebug --version 5.0.0
Ignoring concurrent-ruby-ext-1.0.2 because its extensions are not built. Try: gem pristine concurrent-ruby-ext --version 1.0.2
Ignoring debug_inspector-0.0.2 because its extensions are not built. Try: gem pristine debug_inspector --version 0.0.2
W mojej pracy na komputerze lista była znacznie dłuższa, ale łatwa do rozwiązania. Kiedy wypróbowałem sugerowany gem pristine GEM
, powiedział mi, że nie mogę znaleźć klejnotu, więc pobiegłem gem install GEM
i to rozwiązało problem.
W domu nic nie działa.
Rzeczy, które próbowałem, od zdrowego rozsądku i różnych innych pytań dotyczących stosu:
gem pristine GEM
gem pristine --all
- odinstalowanie i ponowne zainstalowanie klejnotu
gem update
gem update --system
bundle update
- odinstalowanie i ponowne zainstalowanie
bundler
- odinstalowanie i ponowne zainstalowanie
rails
(chociaż nie jest to problem związany z Railsami). - usuwanie
~/.bundle/
- otwieranie
XCode
i pozwalanie na zainstalowanie niektórych rozszerzeń (musiało to zrobić, ale nic nie naprawiło). - uruchamianie
brew doctor
i rozwiązywanie wszystkich drobnych problemów, a następniebrew update
ibrew upgrade
gem install curb
(Nie mogę sobie wyobrazić, co ten klejnot ma wspólnego z tym problemem, ale dwie różne osoby wymieniły go jako ostatni etap naprawy tego samego ostrzeżenia).
bcrypt
i nadal dało mi to dwa ostrzeżenia.gem pristine --all
nie działał. Rozwiązany przez usunięcie wszystkich klejnotów, w tym pakietu. Następnie zainstalowałem pakietgem install bundler
i ostatecznie wróciłem do mojego projektu i uruchomiłem,bundle install
który ponownie zainstalował wszystkie moje klejnoty i wszystko działaOdpowiedzi:
Właśnie dzisiaj natknąłem się na ten problem - otrzymywanie takich ostrzeżeń dla klejnotów, które nie zostały nawet zainstalowane!
... Cóż, okazuje się, że perełki zostały zainstalowane - za inny rubin niż ten, który aktywowałem z chrubami (2.2.3 vs 2.3.1).
Zmiana na wszystkie rubiny i bieganie
gem pristine --all
na nich wszystkich rozwiązało problem.źródło
gem pristine --all
nic nie da. Zobacz tę odpowiedź w Ask Different, aby uzyskać więcej informacji.gem pristine --all
ma problemy z uprawnieniami, powinieneś sprawdzićwhich ruby
.brew link --overwrite ruby && source ~/.bash_profile
i biegnijgem pristine --all
może pomócNatknąłem się na ten problem i wykonałem wszystkie te same polecenia, co powyżej, posuwając się nawet do usunięcia wszystkich moich wcześniej zainstalowanych wersji Ruby. Jednak błąd nadal występował.
Okazało się, że zostało kilka klejnotów dla różnych (wcześniej odinstalowanych) wersji w
~/.gem/ruby/
. Po usunięciu folderów, których już nie używałem, błędy zniknęły.źródło
Miałem ten problem dzisiaj i frustrowałem się, ponieważ nie mogłem pisać, ponieważ cały mój edytor migał na czerwono z komunikatami o błędach.
Nie jestem do końca pewien, co dokładnie to spowodowało, ale uważam, że dzieje się tak dlatego, że mamy wiele wersji języka Ruby LUB zainstalowanych jest wiele menedżerów wersji języka Ruby które nadpisują się nawzajem iw inny sposób psują ścieżki do klejnotów.
Plik
gem
Polecenie pobiera również nadpisane gdy masz rbenv i RVM.Zobacz, które z nich zainstalowałeś, wpisując;
Jeśli jeden z nich zostanie zainstalowany, zwróci ścieżkę. Następnie usuń je, upewnij się, że całkowicie wyczyściłeś wszystkie katalogi i zacznij od czystej instalacji.
Usunąć
Oto co zrobiłem dla rvm ;
Oto, dla czego zrobiłem rbenv
Najpierw zainstalowano https://github.com/meowsus/rbenv-clean , a następnie
Zainstaluj ponownie
Wtedy masz czysty katalog domowy do pracy. Ponownie zainstalowałem rbenv z Jak zainstalować Ruby 2.1.4 na Ubuntu 14.04 . I w końcu;
źródło
Zrobiłem wszystko, o czym mowa powyżej, w tym
ale dla mnie problem był ten sam. Właśnie ponownie uruchomiłem komputer Mac jako ostatnią nadzieję, a komunikaty ostrzegawcze zniknęły.
Dziwne, ale jeśli ktoś zmaga się z tym problemem po wypróbowaniu wszystkiego na StackOverflow, spróbuj ponownie uruchomić komputer.
źródło
Jeśli zainstalowałeś RVM, możliwe, że łapiesz błąd, ponieważ zainstalowałeś różne wersje.
Sprawdź i usuń niepotrzebne wersje, ale myślę, że to nie jest dobre podejście. W każdym razie błędy zniknęły.
Po odświeżeniu cocoapods, należy go wstrzyknąć do .rvm GEM_HOME
Prawdopodobnie
pod COMMAND
wyrzuci błąd ominitest
gem, więc -gem install minitest
źródło
TL; DR - klejnoty Ruby nie lubią Rubinów uruchamianych z linków symbolicznych lub przenoszonych z miejsca, w którym zostały zbudowane (z powodu osadzonych shebangów)
Jeśli katalog Ruby jest wywoływany lub zmienne środowiskowe wskazują na katalog z dowiązaniem symbolicznym, są kopiowane lub mają zmienioną nazwę, prawdopodobnie pojawi się ten komunikat. Używam chruby i łączyłem symbolicznie
/opt/rubies/
->/usr/local/ruby/
, ale dynamiczna logika znajdowania bibliotek Rubiego nie działa z tym dobrze.Rozwiązaniem w moim przypadku było zastąpienie dowiązania symbolicznego rzeczywistymi rubinami
/opt/rubies/
i uruchomgem pristine --all
w każdym Rubim. Dla innych korzystających z RVM lub Rbenv, powodzenia bez zaczynania od zera.Może to nie być dokładny problem, ale miejmy nadzieję, że pomoże.
źródło
gem pristine --all
po ich wszystkich. Dzięki za wskrzeszenie tego martwego pytania. Byłem bliski spalenia tego wszystkiego i rozpoczęcia od nowa.Dodaję tutaj swój własny smak. Używam
rbenv
zainstalowanego przez Homebrew i otrzymywałem cztery z tych komunikatów „ignorujących ... rozszerzenia nie zostały zbudowane”. Konkretnie:Próbowałem wielu rzeczy w tym wątku bez powodzenia. Wreszcie w moim przypadku:
brew uninstall rbenv
rm -rf ~/.rbenv
brew install rbenv
W tym momencie nadal otrzymywałem błędy, ale teraz miałem tylko jedną wersję Rubiego do pokonania:
W tym momencie próbowałem,
sudo gem pristine --all
ale odmówiono mi uprawnień do katalogu systemowego Gems.Więc przeszedłem i przebiegłem nieskazitelnie na każdym klejnocie, jak
sudo gem pristine bcrypt --version 3.1.12
(itp)I w końcu błędy zniknęły.
źródło
To jest stary wątek, ale sam napotkałem ten problem.
Nie musisz ponownie uruchamiać komputera, wystarczy odświeżyć środowisko, możesz to zrobić za pomocą polecenia rehash:
Ze strony podręcznika:
rehash command re-computes the internal hash table of the contents of directories listed in the path environmental variable to account for new commands added.
źródło
rehash
lubhash -r
dla bash jest poleceniem powłoki dostępnym na * nix. Po uruchomieniu powłoka C buduje tablicę skrótów wszystkich poleceń w swojej ścieżce: nazwy każdego polecenia i jego bezwzględnej ścieżki. Tak więc po uruchomieniu csh, jeśli nowe programy są dodawane do katalogów wzdłuż ścieżki, musisz użyć polecenia rehash powłoki, aby odbudować tablicę skrótów. (por .: docstore.mik.ua/orelly/unix3/upt/ch27_06.htm )Miałem ten problem, ale tylko gdy zaczynałem
tmux
sesję używająctmuxinator
.Okazało się, że to dlatego, że używam
tmuxinator
zbrew
zamiast instalować go za pomocągem install
. Być może używaniechruby
w tym samym czasie również przyczyniło się do problemu.p / s: Usunąłem również nieużywany rubin z,
~/.gem/ruby
ale wątpię, że to jest powód, dla którego ten problem został rozwiązany.źródło
Bieganie
gem pristine --all
na początku nie pomogło, ale potem zdałem sobie sprawę: skrypt, który uruchamiałem, zaczynał się od wiersza:#!/usr/bin/ruby
W moim systemie macOS (Catalina, ale nie sądzę, że to ma znaczenie) wskazuje to na Ruby, który był dostarczony z systemem, a nie ten zainstalowany przez RVM. Uruchomienie
gem pristine --all
naprawiało instalację RVM, ale mój skrypt wywoływał inną wersję Rubiego.Rozwiązaniem dla mnie było użycie
env
polecenia do wywołania dowolnego Rubiego, który jest określony w bieżącej powłocePATH
. Zmiana górnej linii skryptu na to naprawiła problem:#!/usr/bin/env ruby
źródło
bundle install
zainstalował klejnoty (i ich natywne rozszerzenia) dla ruby wybranego za pomocą przełącznika RVM Ruby, gdzie skrypt odnoszący się do systemu Ruby nie może ich znaleźć. Twoje rozwiązanie jest standardową praktyką, aby skrypty i klejnoty Rubiego działały z rubinami zainstalowanymi przez użytkownika ( zobacz ).apt purge tmuxinator
a potemgem install tmuxinator
działało. Prawdopodobnie będę musiał zainstalować go za każdym razem, gdy zaktualizuję moją wersję Ruby, która nie jest projektem, ale podoba mi się to bardziej. Dzięki!Uruchamianie Mac OS Catalina, brew i rbenv ...
Natknąwszy się dzisiaj na ten dokładny problem i przejrzawszy wszystkie odpowiedzi tutaj, w końcu natknąłem się na inny powód tego błędu:
Ignoring nokogiri 1.10.7 because its extensions are not built. Try: gem pristine nokogiri --version 1.10.7
I oczywiście nieskazitelny klejnot nie działał.
Moim problemem były na stałe zakodowane zmienne środowiskowe GEM_HOME i GEM_PATH, które przesłaniały rbenv.
Więc sprawdź, czy nie ustawiłeś GEM_PATH i GEM_HOME w ~ / .zshrc
źródło
Odinstaluj i ponownie zainstaluj Vagrant. W
unistall.tool
obrazie instalatora .dmg znajduje się skrypt bash, który usunie Vagrant.Znalazłem to rozwiązanie tutaj: Aktualizacja rozszerzeń Vagrant i Gems nie jest wbudowana
źródło
Miałem ten sam problem i używam rbenv. Z jakiegoś powodu zaginęło moje globalne ustawienie rbenv. Aby naprawić ten problem, ustawiłem wersję globalną na jedną z moich wersji rbenv ... na przykład:
rbenv global 2.5.1
źródło
Jest to również problem, gdy tworzysz na komputerze Mac, a następnie tworzysz obraz Dockera: https://forums.aws.amazon.com/thread.jspa?messageID=879802&tstart=0
źródło
Sugestia Libby, aby po prostu rozpocząć nową sesję terminalową (którą skomentowała na temat odpowiedzi Sebastiana Kima) zadziałała dla mnie. Znacznie szybciej niż którykolwiek z pozostałych, więc chciałem dać odpowiedź, aby była bardziej widoczna.
źródło
W moim przypadku próbowałem biec,
pristine --all
ale otrzymywałem:Następnie usunąłem zawartość,
Users/{{user.name}}/.gem
gdy musiałem uruchomićbundle install --force
, ponownie zainstalowałem wszystko, a następnie poleceniepristine --all
działało zgodnie z oczekiwaniamiźródło
To rozwiązanie zadziałało dla mnie w RubyMine IntelliJ
Miałem dwa różne terminale i
RVM
iruby<Version>
.Rozwiązanie:
Musiałem przełączyć go na wersję RVM, aby błędy zniknęły
Preferences>Languages&Frameworks>Ruby SDK
Błędy:
źródło