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

Cada pocos días, esto sucederá al hacer varias cosas en Ruby CLI (en particular, usar 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 ocurriendo. ¿Alguien se ha encontrado con esto antes?

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

Respuestas (9)

Recientemente cambié de rvma chrubyy ejecuté gem update --system, ahí fue cuando comenzó a ocurrirme el problema. Después de eso, cada vez que corría el 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 arregló, pero hice 2 cosas y la advertencia desapareció:

gem uninstall bundler
gem install bundler

gem install curb
Por extraño que parezca, comenzó para mí cuando cambié de Ruby incluido en OS X a RVM. Por lo general, desaparece por sí solo después de unos días o si abro una nueva sesión (lo cual es una especie de molestia cuando ocurre al mediodía). Por lo general, tengo que reinstalar lo que esté usando en un momento dado, y suele ser Knife.
estaba sucediendo con docenas de gemas en mi máquina. Creo que solo tuvieron que ser reconstruidos.
Para mí, tuve que desinstalar cada gema para la que estaba dando una advertencia y luego reinstalar conbundle install
"Me mataron" - wow.
Lo que sea que intento, lo obtengo You don't have write permissions for the /Library/Ruby/Gems/2.3.0 directory, esos problemas comenzaron por sí solos, ni siquiera estoy usando Ruby por lo que sé. Pero recibo errores sobre extensiones no creadas clocale-0.0.3cada vez que comienzo un nuevo shell

En mi caso empiezo a ver estos errores después de instalarrvm

Resuelvo tal problema con:gem pristine --all

que comando tan util
Esto funcionó ... Pero no tengo idea de por qué
la desinstalación del paquete y la instalación no funcionaron. ¡Pero este funcionó! ¡Gracias!
Esta debería haber sido la respuesta aceptada.

Este problema ocurre si una gema se compiló en una biblioteca diferente a la 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 --all, no ayudará, porque las gemas solo se pueden vincular contra una versión de rubí.

Ahhhh gracias! Recibía ese error al ejecutar "rails s". Cambié a "bundle exec rails s" y el problema desapareció.
esta debería ser la respuesta aceptada
Esta respuesta es correcta. Si el problema ocurre en un repositorio de Rails donde se guardan las gemas vendor/bundle, simplemente elimínelas con rm -rf vendor/bundley vuelva a instalarlas con bundle install.
Gracias. Lo intenté gem pristine --allhasta que estaba azul en la cara y ahora sé por qué no funcionó...
Nota personal: vea mi respuesta más reciente a continuación para obtener más detalles: apple.stackexchange.com/a/436672/79496

Lo arreglé por:

rvm get stable

https://github.com/rvm/rvm/issues/3348

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 tenía que hacerlo de todos modos, quizás porque el primer script actualiza algunas bibliotecas/dependencias internas.

Esto es lo que estaba buscando para la solución MacOS Sierra. Gracias

Asegúrese de ejecutar "gem prístine --all" para obtener la versión correcta de Ruby. Si se está llamando a /usr/bin/ruby... use "/usr/bin/gem pristine --all". Esto no es obvio si está usando 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 lo ideal... pero debería hacer que este error desaparezca.

En mi caso:

rvm get stable

sudo gem pristine --all

Soy muy nuevo en Rails, por lo que este podría ser un consejo completamente equivocado, pero dado que ninguna de las otras soluciones funcionó para mí, pensé en compartir la mía.

Mic92 y Gerry me pusieron en el camino correcto: estaba usando rails swhich can cause 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 se spring stopsolucionó.

Luego volví a correr rails generate controller, la primavera se reinició y todo funcionó (lloré un poco).

Lo que significa este error es que no puede usar la versión actual de la gema. Se instaló con un ejecutable de Ruby más antiguo, y/u otras utilidades y binarios del sistema han cambiado, por lo que es necesario volver a instalar completamente la gema desde cero. Esto me sucedió cuando migré de Ruby 2.5.3 a Ruby 2.7.1. Había transferido todas mis gemas de la versión anterior (a través rvm migratede ), pero ahora estaban rotas. Todas mis gemas tuvieron que ser reconstruidas de acuerdo con las dependencias 2.7.1. Así que tuve que eliminar por completo todas mis gemas a través de rvm gemset empty ruby-2.7.1. Cuando eso suceda, imprimirá una lista de todas las gemas que se instalaron. Copie y pegue esa salida en un archivo seguro, que puede volver a consultar más tarde para reinstalar las gemas que necesita para instalar un entorno verdaderamente limpio para su nueva versión de Ruby.