Ruby en OS X 10.9 Ignorando gemas porque las extensiones no están construidas

36

Cada pocos días esto sucederá al hacer varias cosas en Ruby CLI (especialmente, utilizando la knifeutilidad para Chef) en OS X (no se puede replicar en otros entornos; Linux, FreeBSD, etc.):

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

Y aunque es una solución simple, sigue sucediendo. ¿Alguien ha encontrado esto antes?

$ ruby -v
ruby 1.9.3p484 (2013-11-22 revision 43786) [x86_64-darwin11.2.0]
tony_perkis666
fuente

Respuestas:

5

Recientemente cambié de rvma chrubyy corrí gem update --system, ahí fue cuando el problema comenzó a ocurrir para mí. Después de eso, cada vez que corría paquete me mataban con las mismas advertencias. Todavía no estoy seguro de qué causó el problema.

Ignoring curb-0.8.6 because its extensions are not built. Try: gem pristine curb-0.8.6

No estoy seguro de qué lo solucionó, pero hice 2 cosas y la advertencia desapareció:

gem uninstall bundler
gem install bundler

gem install curb
lfender6445
fuente
Por extraño que parezca, comenzó cuando cambié de Ruby incluido en OS X a RVM. En general, se borra por sí solo después de unos días o si abro una nueva sesión (que es una molestia cuando ocurre al mediodía). Por lo general, tengo que volver a instalar lo que sea que esté usando en un momento dado, y generalmente es Knife.
tony_perkis666
sucedía por docenas de gemas en mi máquina. creo que solo tuvieron que ser reconstruidos
lfender6445
En cuanto a mí, he tenido que desinstalar cada gema que estaba dando una advertencia para y vuelve a instalar conbundle install
Noah Passalacqua
"Fui asesinado" - wow.
B Seven
Lo que sea que intente obtener You don't have write permissions for the /Library/Ruby/Gems/2.3.0 directory, esos problemas comenzaron por su cuenta, ni siquiera estoy usando ruby ​​por lo que sé. Pero recibo errores sobre las extensiones no creadas para clocale-0.0.3cada vez que inicio un nuevo shell
Vadorequest
62

En mi caso, empiezo a ver estos errores después de instalar rvm

Resuelvo tal problema con: gem pristine --all

skywinder
fuente
qué comando útil
lfender6445
2
Esto funcionó ... Pero no tengo idea de por qué
Hubro
1
desinstalar bundler e instalar no funcionó. ¡Pero este funcionó! ¡Gracias!
Srikanth Jeeva
3
Esta debería haber sido la respuesta aceptada.
ILikeTurtles
19

Este problema ocurre si una gema fue compilada contra un libruby diferente al que se está ejecutando actualmente. Por ejemplo, si uno usa un ruby ​​ubicado en su directorio de inicio con chruby e instala gemas en ~ / .gem / ruby, pero ejecuta un script que llama a / usr / bin / ruby, que reutiliza las gemas instaladas allí. En este caso gem pristine --allno ayudará, porque las gemas solo se pueden vincular contra una versión rubí.

Mic92
fuente
Ahhhh gracias! Estaba recibiendo ese error al ejecutar "rails s". Cambié a "bundle exec rails s" y el problema desapareció.
Gerry
1
esta debería ser la respuesta aceptada
Dominik Schreiber
1
Esta respuesta es correcta. Si el problema ocurre en un repositorio de Rails donde se guardan gemas vendor/bundle, simplemente bórrelas rm -rf vendor/bundley vuelva a instalarlas bundle install.
vmarquet
Gracias. Lo intenté gem pristine --allhasta que me
puse triste
2

Esto funcionó para mí en MacOs Sierra:

xcode-select --install
gem install nokogiri

Ya había instalado todo el xcode antes de ejecutar los comandos anteriores, pero tuve que hacer esto de todos modos, tal vez porque el primer script actualiza algunas bibliotecas / dependencias internas.

Javad Sadeqzadeh
fuente
Esto es lo que estaba buscando para la solución MacOS Sierra. Gracias
Sakares
1

Asegúrese de ejecutar "gem pristine --all" para la versión correcta de ruby. Si se llama a / usr / bin / ruby ​​... use "/ usr / bin / gem pristine --all". Esto no es obvio si está utilizando rvm y tiene 10 versiones de ruby ​​instaladas.

Esto solucionó mi problema por un día y luego volvió.

Lo que parece ser una solución más permanente es hacer "rvm reset" para que el ruby ​​predeterminado sea la versión OSX instalada / usr / bin / ruby ​​y / usr / bin / gem. Si quiero usar una versión más nueva de ruby ​​para un proyecto, uso .ruby-version y .ruby-gemset en el directorio raíz del proyecto para configurar explícitamente la versión de ruby ​​que quiero usar. No es ideal ... pero debería hacer que este error desaparezca.

Neuronsong
fuente
0

En mi caso:

rvm get stable

sudo gem pristine --all

skozz
fuente
0

Soy muy nuevo en los rieles, por lo que este podría ser un consejo completamente equivocado, pero como ninguna de las otras soluciones funcionó para mí, pensé en compartir el mío.

Mic92 y Gerry me pusieron en el camino correcto: estaba usando rails s que puede causar errores porque ejecuta una versión de rieles que puede ser una versión diferente a la del proyecto.

Traté de conectarme con bin/rails server , obtuve un error diferente (gemas faltantes), así que corríbundle install

En este punto, recibí un tercer error ("versión de biblioteca incompatible"), que spring stop curó.

Luego corrí rails generate controllernuevamente, la primavera se reinició y todo funcionó (lloré un poco).

mrtnmgs
fuente