Co kilka dni będzie to miało miejsce podczas robienia różnych rzeczy w Ruby CLI (zwłaszcza przy użyciu knife
narzędzia dla Chef) na OS X (niemożność replikacji w innych środowiskach; Linux, FreeBSD itp.):
Ignoring bcrypt-3.1.7 because its extensions are not built. Try: gem pristine bcrypt-3.1.7
Ignoring bigdecimal-1.2.5 because its extensions are not built. Try: gem pristine bigdecimal-1.2.5
Ignoring ffi-yajl-1.1.0 because its extensions are not built. Try: gem pristine ffi-yajl-1.1.0
Ignoring gem-wrappers-1.2.5 because its extensions are not built. Try: gem pristine gem-wrappers-1.2.5
Ignoring gem-wrappers-1.2.4 because its extensions are not built. Try: gem pristine gem-wrappers-1.2.4
Ignoring pg-0.17.1 because its extensions are not built. Try: gem pristine pg-0.17.1
Ignoring psych-2.0.6 because its extensions are not built. Try: gem pristine psych-2.0.6
Ignoring sqlite3-1.3.9 because its extensions are not built. Try: gem pristine sqlite3-1.3.9
I choć jest to prosta poprawka, wciąż się dzieje. Czy ktoś już się z tym spotkał?
$ ruby -v
ruby 1.9.3p484 (2013-11-22 revision 43786) [x86_64-darwin11.2.0]
bundle install
You don't have write permissions for the /Library/Ruby/Gems/2.3.0 directory
, te problemy zaczęły się same, nawet nie używam rubinu do tego, co wiem. Ale dostaję błędy dotyczące rozszerzeń, które nie zostały zbudowane zaclocale-0.0.3
każdym razem, gdy uruchamiam nową powłokęW moim przypadku ten błąd pojawia się po instalacji
rvm
Rozwiązuję taki problem z:
gem pristine --all
źródło
Ten problem występuje, jeśli klejnot został skompilowany z inną biblioteką niż aktualnie uruchomiona. Na przykład, jeśli ktoś używa ruby znajdującego się w swoim katalogu domowym z chruby i instaluje klejnoty do ~ / .gem / ruby, ale uruchamia skrypt, który wywołuje / usr / bin / ruby, który ponownie wykorzystuje zainstalowane tam klejnoty. W tym przypadku
gem pristine --all
nie pomoże, ponieważ klejnoty można połączyć tylko z jedną wersją ruby.źródło
vendor/bundle
, wystarczy je usunąć za pomocąrm -rf vendor/bundle
i ponownie zainstalować za pomocąbundle install
.gem pristine --all
aż byłem niebieski na twarzy i teraz wiem, dlaczego to nie zadziałało ...Naprawiłem to przez:
https://github.com/rvm/rvm/issues/3348
źródło
To działało dla mnie na MacOs Sierra:
Zainstalowałem już cały kod xcode przed uruchomieniem powyższych poleceń, ale i tak musiałem to zrobić, być może dlatego, że pierwszy skrypt aktualizuje niektóre biblioteki wewnętrzne / zależności.
źródło
Upewnij się, że korzystasz z „gem pristine - all” dla odpowiedniej wersji rubinu. Jeśli nazywa się / usr / bin / ruby ... użyj "/ usr / bin / gem pristine --all". Nie jest to oczywiste, jeśli używasz rvm i masz zainstalowanych 10 wersji Ruby.
To naprawiło mój problem przez jeden dzień, a potem wrócił.
Wydaje się, że bardziej trwałym rozwiązaniem jest wykonanie „resetowania rvm”, aby domyślnym ruby była zainstalowana wersja OSX / usr / bin / ruby i / usr / bin / gem. Jeśli chcę użyć nowszej wersji ruby dla projektu, używam .ruby-version i .ruby-gemset w katalogu głównym projektu, aby jawnie ustawić wersję ruby, której chcę użyć. Nie jest idealny ... ale powinien sprawić, że ten błąd zniknie.
źródło
W moim przypadku:
rvm get stable
sudo gem pristine --all
źródło
Jestem bardzo nowy w szynach, więc może to być całkowicie myląca rada, ale ponieważ żadne z innych rozwiązań nie zadziałało, pomyślałem, że podzielę się moim.
Mic92 i Gerry postawili mnie na właściwej drodze: używałem,
rails s
co może powodować błędy, ponieważ działa wersja szynowa, która może być inną wersją niż projekt.Próbowałem się połączyć
bin/rails server
, otrzymałem inny błąd (brakujące klejnoty), więc pobiegłembundle install
W tym momencie dostałem trzeci błąd („niezgodna wersja biblioteki”), który
spring stop
wyleczył.Potem pobiegłem
rails generate controller
ponownie, wiosna ponownie uruchomiona i wszystko działało (trochę płakałem).źródło