Ruby no OS X 10.9 Ignorando gemas porque extensões não são construídas


36

A cada poucos dias, isso acontece ao fazer várias coisas no Ruby CLI (principalmente, usando o knifeutilitário Chef) no OS X (incapaz de replicar em outros ambientes; 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

E, embora seja uma solução simples, continua acontecendo. Alguém já passou por isso antes?

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

Respostas:


5

I recentemente trocou a partir rvmde chrubye correu gem update --system, é quando o problema começou a ocorrer para mim. Depois disso, sempre que eu executava um pacote, era abatido com os mesmos avisos. Ainda não tenho certeza do que causou o problema.

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

Não sei o que foi corrigido, mas fiz duas coisas e o aviso desapareceu:

gem uninstall bundler
gem install bundler

gem install curb

Curiosamente, tudo começou para mim quando mudei do Ruby do OS X para o RVM. Geralmente, ele desaparece sozinho após alguns dias ou se eu abrir uma nova sessão (o que é meio que um aborrecimento quando ocorre ao meio-dia). Geralmente, tenho que reinstalar o que estiver usando em um determinado momento, e geralmente é o Knife.
tony_perkis666

isso estava acontecendo para dezenas de jóias na minha máquina. eu acho que eles só tinha de ser reconstruído
lfender6445

Para mim, eu tive que desinstalar cada jóia que ele estava dando um aviso para e reinstale combundle install
Noah Passalacqua

"Eu fui massacrado" - uau.
B Seven

O que quer que eu tente You don't have write permissions for the /Library/Ruby/Gems/2.3.0 directory, esses problemas começaram por conta própria, nem estou usando ruby ​​para tudo o que sei. Mas eu recebo erros sobre extensões que não foram criadas clocale-0.0.3sempre que inicio um novo shell
Vadorequest

62

No meu caso, começo a ver esses erros após a instalação rvm

Eu resolvo esse problema com: gem pristine --all


que comando útil
lfender6445 6/15/15

2
Isso funcionou ... Mas eu não tenho idéia porque
Hubro

1
desinstalar o bundler e instalar não funcionou. Mas este funcionou! Obrigado!
Srikanth Jeeva

3
Esta deveria ter sido a resposta aceita.
ILikeTurtles

19

Esse problema ocorre se uma gema foi compilada em um bibliotecário diferente do atualmente em execução. Por exemplo, se alguém usa um ruby ​​localizado em seu diretório pessoal com o chruby e instala gems em ~ / .gem / ruby, mas executa um script que chama / usr / bin / ruby, que reutiliza as gems instaladas lá. Nesse caso gem pristine --all, não ajudará, porque as gemas podem ser vinculadas apenas a uma versão ruby.


Ahhhh obrigado! Eu estava recebendo esse erro ao executar o "rails s". Eu mudei para "bundle exec rails s" e o problema desapareceu.
Gerry

1
esta deve ser a resposta aceita
Dominik Schreiber

1
Esta resposta está certa. Se o problema ocorrer em um repositório do Rails em que as gemas são salvas vendor/bundle, exclua-as rm -rf vendor/bundlee reinstale-as bundle install.
Vmarquet

Obrigado. Eu tentei gem pristine --allaté ficar com o rosto azul e agora eu sei por que não funcionou ...
GDP2


2

Isso funcionou para mim no MacOs Sierra:

xcode-select --install
gem install nokogiri

Eu já tinha instalado o xcode inteiro antes de executar os comandos acima, mas precisava fazer isso de qualquer maneira, talvez porque o primeiro script atualize algumas bibliotecas / dependências internas.


Era isso que eu estava procurando pela solução MacOS Sierra. Obrigado
Sakares 11/11/16

1

Verifique se você está executando o "gem pristine --all" para a versão correta do ruby. Se / usr / bin / ruby ​​estiver sendo chamado ... use "/ usr / bin / gem pristine --all". Isso não é óbvio se você estiver usando o rvm e tiver 10 versões do ruby ​​instaladas.

Isso resolveu meu problema por um dia e depois voltou.

O que parece ser uma solução mais permanente é fazer "rvm reset" para que o ruby ​​padrão seja a versão OSX instalada / usr / bin / ruby ​​e / usr / bin / gem. Se eu quiser usar uma versão mais recente do ruby ​​para um projeto, use .ruby-version e .ruby-gemset no diretório raiz do projeto para definir explicitamente a versão do ruby ​​que eu quero usar. Não é o ideal ... mas deve fazer com que esse erro desapareça.


0

No meu caso:

rvm get stable

sudo gem pristine --all


0

Eu sou muito novo em trilhos, então isso pode ser um conselho completamente errado, mas como nenhuma das outras soluções funcionou para mim, pensei em compartilhar o meu.

Mic92 e Gerry me colocaram no caminho certo: eu estava usando o rails sque pode causar erros porque ele executa uma versão rails que pode ser uma versão diferente da do projeto.

Tentei me conectar bin/rails server, recebi um erro diferente (falta de gemas) e corribundle install

Nesse ponto, recebi um terceiro erro ("versão incompatível da biblioteca"), que foi spring stopsolucionado.

Então corri rails generate controllernovamente, a primavera recomeçou e tudo deu certo (chorei um pouco).

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.