Ruby su OS X 10.9 Ignorare le gemme perché le estensioni non sono costruite


35

Ogni pochi giorni ciò accadrà quando si fanno varie cose in Ruby CLI (in particolare, usando il knife utility for Chef) su OS X (impossibile da replicare in altri ambienti; Linux, FreeBSD, ecc.):

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

E mentre è una soluzione semplice, continua a succedere. Qualcuno si è imbattuto in questo prima?

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

Risposte:


5

Di recente sono passato da rvm a chruby e corse gem update --system, questo è quando il problema si è verificato per me. Successivamente, ogni volta che ho eseguito il bundle, sono stato macellato con gli stessi avvertimenti. Ancora non sono sicuro quale sia la causa del problema.

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

Non sono sicuro di cosa sia stato risolto, ma ho fatto 2 cose e l'avviso è scomparso:

gem uninstall bundler
gem install bundler

gem install curb

Stranamente, è iniziato per me quando sono passato da OS X in bundle Ruby a RVM. Generalmente, si cancella da solo dopo alcuni giorni o se apro una nuova sessione (che è una specie di seccatura quando si verifica mezzogiorno). Generalmente devo reinstallare qualsiasi cosa stia usando in un dato momento, e questo di solito è Knife.
tony_perkis666

stava succedendo per dozzine di gemme sulla mia macchina. penso che dovessero essere ricostruiti
lfender6445

Per quanto mi riguarda, ho dovuto disinstallare ogni gem che stava dando un avvertimento e quindi reinstallare con bundle install
Noah Passalacqua

"Sono stato massacrato" - wow.
B Seven

61

Nel mio caso comincio a vedere questi errori dopo l'installazione rvm

Risolvo questo problema con: gem pristine --all


che comando utile
lfender6445

2
Questo ha funzionato ... Ma non ho idea del perché
Hubro

1
la disinstallazione di bundler e l'installazione non hanno funzionato. Ma questo ha funzionato! Grazie!
Srikanth Jeeva

3
Questa dovrebbe essere la risposta accettata.
ILikeTurtles

19

Questo problema si verifica se una gemma è stata compilata su una libreria diversa come quella attualmente in esecuzione. Ad esempio, se si usa un rubino nella sua home directory con chruby e si installano gemme in ~ / .gem / ruby, si esegue uno script che chiama / usr / bin / ruby, che riutilizza le gemme installate lì. In questo caso gem pristine --all non aiuterà, perché le gemme possono essere collegate solo contro una versione rubino.


Ahhhh grazie! Stavo ricevendo questo errore durante l'esecuzione di "rails s". Sono passato a "bundle exec rails" e il problema è svanito.
Gerry

1
questa dovrebbe essere la risposta accettata
Dominik Schreiber

1
Questa risposta è giusta. Se il problema si verifica in un repository Rails in cui vengono salvate le gemme vendor/bundle, cancellali con rm -rf vendor/bundle e reinstallarli con bundle install.
vmarquet

Grazie. Provai gem pristine --all finché non sono diventato blu in faccia e ora so perché non ha funzionato ...
GDP2


2

Questo ha funzionato per me su MacOs Sierra:

xcode-select --install
gem install nokogiri

Avevo già installato l'intero xcode prima di eseguire i comandi precedenti, ma dovevo farlo comunque, forse perché il primo script aggiorna alcune librerie / dipendenze interne.


Questo è quello che stavo cercando per la soluzione MacOS Sierra. Grazie
Sakares

1

Assicurati di eseguire "gem pristine --all" per la giusta versione di ruby. Se viene chiamato / usr / bin / ruby ​​... usa "/ usr / bin / gem pristine --all". Questo non è ovvio se stai usando rvm e hai 10 versioni di ruby ​​installate.

Questo ha risolto il mio problema per un giorno e poi è tornato.

Quello che sembra essere una soluzione più permanente è fare "rvm reset" per avere il ruby ​​di default nella versione OSX / usr / bin / ruby ​​e / usr / bin / gem. Se voglio usare una versione più recente di ruby ​​per un progetto, uso .ruby-version e .ruby-gemset nella directory root del progetto per impostare esplicitamente la versione di ruby ​​che voglio usare. Non ideale ... ma dovrebbe far sparire questo errore.


0

Nel mio caso:

rvm get stable

sudo gem pristine --all


0

Sono molto nuovo alle rotaie, quindi questo potrebbe essere un consiglio completamente fuorviante, ma dal momento che nessuna delle altre soluzioni ha funzionato per me ho pensato di condividere il mio.

Mic92 e Gerry mi hanno messo sulla strada giusta: stavo usando rails s che può causare errori perché esegue una versione di rotaie che può essere una versione diversa da quella del progetto.

Ho provato a connetterti bin/rails server, Ho ricevuto un errore diverso (gemme mancanti), quindi ho corso bundle install

A questo punto ho ricevuto un terzo errore ("versione della libreria incompatibile"), che spring stop guarito.

Allora ho corso rails generate controller di nuovo, la primavera è ripartita e tutto ha funzionato (ho pianto un po ').

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.