Ruby unter OS X 10.9 Edelsteine ​​werden ignoriert, da keine Erweiterungen erstellt werden


36

Dies geschieht alle paar Tage, wenn Sie verschiedene Aufgaben in Ruby CLI (insbesondere mit dem knifeDienstprogramm für Chef) unter OS X ausführen (Replikation in anderen Umgebungen nicht möglich; Linux, FreeBSD usw.):

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

Und während es eine einfache Lösung ist, passiert es immer wieder. Ist das schon mal jemandem begegnet?

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

Antworten:


5

Ich wechselte vor kurzem von rvmzu chrubyund RAN gem update --system, das ist , wenn das Thema für mich begann auftreten. Danach wurde ich jedes Mal, wenn ich Bündel lief, mit denselben Warnungen geschlachtet. Immer noch nicht sicher, was das Problem verursacht hat.

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

Ich bin mir nicht sicher, was es behoben hat, aber ich habe zwei Dinge getan und die Warnung verschwand:

gem uninstall bundler
gem install bundler

gem install curb

Seltsamerweise fing es für mich an, als ich von dem mit OS X gebündelten Ruby zu RVM wechselte. Im Allgemeinen wird es nach ein paar Tagen von selbst gelöscht oder wenn ich eine neue Sitzung eröffne (was eine Art Ärger ist, wenn es mittags auftritt). Im Allgemeinen muss ich neu installieren, was auch immer ich zu einem bestimmten Zeitpunkt verwende, und das ist normalerweise Knife.
tony_perkis666

es geschah für Dutzende Edelsteine ​​auf meiner Maschine. Ich denke, sie mussten nur umgebaut werden
lfender6445

Für mich selbst musste ich jeden Edelstein deinstallieren, für den es eine Warnung gab, und dann neu installierenbundle install
Noah Passalacqua

"Ich wurde geschlachtet" - wow.
B Seven

Was auch immer ich versuche zu bekommen You don't have write permissions for the /Library/Ruby/Gems/2.3.0 directory, diese Probleme haben von alleine angefangen, ich benutze nicht einmal Ruby für alles was ich weiß. Aber ich bekomme Fehler über Erweiterungen, die nicht erstellt wurden, clocale-0.0.3wenn ich eine neue Shell
starte

62

In meinem Fall sehe ich diese Fehler nach der Installation rvm

Ich löse ein solches Problem mit: gem pristine --all


Was für ein nützlicher Befehl
lfender6445

2
Das hat funktioniert ... Aber ich habe keine Ahnung warum
Hubro

1
Bundler deinstallieren und installieren hat nicht funktioniert. Aber dieser hat funktioniert! Vielen Dank!
Srikanth Jeeva

3
Dies hätte die akzeptierte Antwort sein sollen.
ILikeTurtles

19

Dieses Problem tritt auf, wenn ein Gem mit einem anderen Libruby kompiliert wurde als dem aktuell ausgeführten. Zum Beispiel, wenn man einen Ruby verwendet, der sich mit chruby in seinem Home-Verzeichnis befindet, und Edelsteine ​​in ~ / .gem / ruby ​​installiert, aber ein Skript ausführt, das / usr / bin / ruby ​​aufruft und die dort installierten Edelsteine ​​wiederverwendet. In diesem Fall gem pristine --allhilft das nicht, da die Edelsteine ​​nur gegen eine Rubinversion verknüpft werden können.


Ahhhh danke! Ich habe diesen Fehler beim Ausführen von "Rails s" erhalten. Ich wechselte zu "Bundle Exec Rails s" und das Problem verschwand.
Gerry

1
Dies sollte die akzeptierte Antwort sein
Dominik Schreiber

1
Diese Antwort ist richtig. Wenn das Problem in einem Rails-Repository auftritt, in dem Edelsteine ​​gespeichert sind vendor/bundle, löschen Sie sie einfach mit rm -rf vendor/bundleund installieren Sie sie erneut mit bundle install.
Vmarquet

Vielen Dank. Ich habe versucht, gem pristine --allbis ich blau im Gesicht war und jetzt weiß ich, warum es nicht funktioniert hat ...
GDP2


2

Das hat bei mir auf MacOs Sierra funktioniert:

xcode-select --install
gem install nokogiri

Ich hatte bereits den gesamten xcode installiert, bevor die obigen Befehle ausgeführt wurden, musste dies aber trotzdem tun, möglicherweise, weil das erste Skript einige interne Bibliotheken / Abhängigkeiten aktualisiert.


Nach dieser MacOS Sierra-Lösung habe ich gesucht. Vielen Dank
Sakares

1

Stellen Sie sicher, dass Sie "gem pristine - all" für die richtige Version von Ruby ausführen. Wenn / usr / bin / ruby ​​aufgerufen wird ... benutze "/ usr / bin / gem pristine --all". Dies ist nicht offensichtlich, wenn Sie rvm verwenden und 10 Ruby-Versionen installiert haben.

Das hat mein Problem für einen Tag behoben und dann ist es zurückgekommen.

Eine dauerhaftere Lösung scheint "rvm reset" zu sein, damit der Standard-Ruby die installierte OSX-Version / usr / bin / ruby ​​und / usr / bin / gem ist. Wenn ich eine neuere Version von Ruby für ein Projekt verwenden möchte, verwende ich .ruby-version und .ruby-gemset im Projektstammverzeichnis, um die Version von Ruby, die ich verwenden möchte, explizit festzulegen. Nicht ideal ... aber es sollte diesen Fehler beseitigen.


0

In meinem Fall:

rvm get stable

sudo gem pristine --all


0

Ich bin sehr neu auf Schienen, so dass dies völlig irreführende Ratschläge sein könnten, aber da keine der anderen Lösungen für mich funktionierte, dachte ich, ich würde meine teilen.

Mic92 und Gerry haben mich auf den richtigen Weg gebracht: Ich habe verwendet, rails swas zu Fehlern führen kann, da es eine Rails-Version ausführt , die eine andere Version als die des Projekts sein kann.

Ich habe versucht, eine Verbindung bin/rails serverherzustellen, es ist ein anderer Fehler aufgetreten (fehlende Edelsteine), also bin ich gelaufenbundle install

Zu diesem Zeitpunkt bekam ich einen dritten Fehler ("inkompatible Bibliotheksversion"), der spring stopbehoben wurde.

Dann bin ich rails generate controllerwieder gelaufen , der Frühling hat wieder angefangen und alles hat funktioniert (ich habe ein bisschen geweint).

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.