40 votes

Ruby sur OS X 10.9 Ignorant les gems car les extensions ne sont pas construites

Tous les quelques jours, cela se produira lors de diverses opérations en Ruby CLI (notamment lors de l'utilisation de l'utilitaire knife pour Chef) sur OS X (impossible de reproduire dans d'autres environnements ; Linux, FreeBSD, etc.) :

Ignoring bcrypt-3.1.7 parce que ses extensions ne sont pas construites.  Essayez : gem pristine bcrypt-3.1.7
Ignoring bigdecimal-1.2.5 parce que ses extensions ne sont pas construites.  Essayez : gem pristine bigdecimal-1.2.5
Ignoring ffi-yajl-1.1.0 parce que ses extensions ne sont pas construites.  Essayez : gem pristine ffi-yajl-1.1.0
Ignoring gem-wrappers-1.2.5 parce que ses extensions ne sont pas construites.  Essayez : gem pristine gem-wrappers-1.2.5
Ignoring gem-wrappers-1.2.4 parce que ses extensions ne sont pas construites.  Essayez : gem pristine gem-wrappers-1.2.4
Ignoring pg-0.17.1 parce que ses extensions ne sont pas construites.  Essayez : gem pristine pg-0.17.1
Ignoring psych-2.0.6 parce que ses extensions ne sont pas construites.  Essayez : gem pristine psych-2.0.6
Ignoring sqlite3-1.3.9 parce que ses extensions ne sont pas construites.  Essayez : gem pristine sqlite3-1.3.9

Et bien que ce soit une correction simple, cela continue de se produire. Est-ce que quelqu'un a déjà rencontré cela auparavant ?

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

1voto

neuronsong Points 11

Assurez-vous d'exécuter "gem pristine --all" pour la bonne version de ruby. Si /usr/bin/ruby est appelé... utilisez "/usr/bin/gem pristine --all". Ce n'est pas évident si vous utilisez rvm et que vous avez 10 versions de ruby installées.

Cela a résolu mon problème pendant un jour puis il est revenu.

Ce qui semble être une solution plus permanente est de faire "rvm reset" pour que le ruby par défaut soit la version installée d'OSX /usr/bin/ruby et /usr/bin/gem. Si je veux utiliser une version plus récente de ruby pour un projet, j'utilise .ruby-version et .ruby-gemset dans le répertoire racine du projet pour définir explicitement la version de ruby que je veux utiliser. Pas idéal... mais cela devrait faire disparaître cette erreur.

0voto

Niels R. Points 1572

Dans mon cas :

rvm get stable

sudo gem pristine --all

0voto

mrtnmgs Points 111

Je suis très nouveau sur rails donc ce conseil pourrait être complètement erroné mais comme aucune des autres solutions ne fonctionnait pour moi, j'ai pensé partager la mienne.

Mic92 et Gerry m'ont mis sur la bonne voie : j'utilisais rails s ce qui peut causer des erreurs car il exécute une version de rails qui peut être différente de celle du projet.

J'ai essayé de me connecter avec bin/rails server, j'ai eu une autre erreur (gems manquants) donc j'ai exécuté bundle install

À ce stade, j'ai eu une troisième erreur ("version de bibliothèque incompatible"), que spring stop a corrigé.

Ensuite, j'ai exécuté rails generate controller à nouveau, spring a redémarré et tout a fonctionné (j'ai pleuré un peu).

0voto

GDP2 Points 1238

Ce que signifie cette erreur, c'est que vous ne pouvez pas utiliser la version actuelle du gem. Il a été installé avec une ancienne version exécutable de Ruby, et/ou d'autres utilitaires système et binaires ont changé, ce qui fait que vous devez réinstaller complètement le gem à partir de zéro. Cela m'est arrivé lorsque j'ai migré de Ruby 2.5.3 à Ruby 2.7.1. J'avais transféré tous mes gems de la version précédente (via rvm migrate), mais ils étaient maintenant cassés. Tous mes gems ont dû être reconstruits selon les dépendances 2.7.1. J'ai donc dû supprimer complètement tous mes gems via rvm gemset empty ruby-2.7.1. Lorsque cela se produit, il affichera une liste de tous vos gems qui ont été installés. Copiez et collez cette sortie dans un fichier sécurisé, que vous pourrez regarder de nouveau plus tard pour réinstaller les gems dont vous avez besoin pour installer un environnement vraiment propre pour votre nouvelle version de Ruby.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X