Ruby pada OS X 10.9 Mengabaikan permata karena ekstensi tidak dibangun

36

Setiap beberapa hari ini akan terjadi ketika melakukan berbagai hal di Ruby CLI (terutama, menggunakan knifeutilitas untuk Chef) di OS X (tidak dapat mereplikasi di lingkungan lain; Linux, FreeBSD, dll.):

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

Dan sementara itu perbaikan sederhana, itu terus terjadi. Pernahkah seseorang melewati ini sebelumnya?

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

Jawaban:

5

Saya baru-baru ini beralih dari dari rvmke chrubydan berlari gem update --system, saat itulah masalah mulai terjadi untuk saya. Setelah itu, kapan saja saya menjalankan bundel saya dibantai dengan peringatan yang sama. Masih tidak yakin yang menyebabkan masalah ini.

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

Tidak yakin apa yang memperbaikinya, tetapi saya melakukan 2 hal dan peringatan itu hilang:

gem uninstall bundler
gem install bundler

gem install curb
lfender6445
sumber
Anehnya, itu mulai untuk saya ketika saya beralih dari OS X-bundled Ruby ke RVM. Secara umum, ini akan hilang dengan sendirinya setelah beberapa hari atau jika saya membuka sesi baru (yang agak merepotkan ketika itu terjadi tengah hari). Saya biasanya harus menginstal ulang apa pun yang saya gunakan pada waktu tertentu, dan itu biasanya Knife.
tony_perkis666
itu terjadi selama puluhan permata di mesin saya. Saya pikir mereka hanya harus dibangun kembali
lfender6445
Untuk saya sendiri, saya harus mencopot setiap permata yang diberi peringatan lalu instal ulang denganbundle install
Noah Passalacqua
"Aku dibantai" - wow.
B Seven
Apa pun yang saya coba saya dapatkan You don't have write permissions for the /Library/Ruby/Gems/2.3.0 directory, masalah itu dimulai sendiri, saya bahkan tidak menggunakan ruby ​​untuk semua yang saya tahu. Tapi saya mendapatkan kesalahan tentang ekstensi yang tidak dibangun untuk clocale-0.0.3setiap kali saya memulai shell baru
Vadorequest
62

Dalam kasus saya, saya mulai melihat kesalahan ini setelah menginstal rvm

Saya mengatasi masalah tersebut dengan: gem pristine --all

pencukur langit
sumber
apa perintah yang berguna
lfender6445
2
Ini berhasil ... Tapi saya tidak tahu mengapa
Hubro
1
mencopot bundler dan menginstal tidak berfungsi. Tapi yang ini berhasil! Terima kasih!
Srikanth Jeeva
3
Ini seharusnya jawaban yang diterima.
ILikeTurtles
19

Masalah ini terjadi, jika permata dikompilasi dengan perpustakaan yang berbeda dengan yang sedang berjalan. Sebagai contoh, jika seseorang menggunakan ruby ​​yang terletak di direktori rumahnya dengan chruby dan menginstal permata ke ~ / .gem / ruby, tetapi jalankan skrip yang memanggil / usr / bin / ruby, yang menggunakan kembali permata yang diinstal di sana. Dalam hal ini gem pristine --alltidak akan membantu, karena permata hanya dapat ditautkan dengan satu versi ruby.

Mic92
sumber
Ahhhh terima kasih! Saya mendapatkan kesalahan itu ketika menjalankan "rails s". Saya beralih ke "bundle exec rails s" dan masalahnya hilang.
Gerry
1
ini seharusnya jawaban yang diterima
Dominik Schreiber
1
Jawaban ini benar. Jika masalah terjadi di repositori Rails tempat permata disimpan vendor/bundle, cukup hapus rm -rf vendor/bundledan instal ulang bundle install.
vmarquet
Terima kasih. Saya mencoba gem pristine --allsampai wajah saya biru dan sekarang saya tahu mengapa itu tidak berhasil ...
GDP2
2

Ini bekerja untuk saya di MacOs Sierra:

xcode-select --install
gem install nokogiri

Saya sudah menginstal seluruh xcode sebelum menjalankan perintah di atas, tetapi saya harus melakukan ini, mungkin karena skrip pertama memperbarui beberapa pustaka / dependensi internal.

Javad Sadeqzadeh
sumber
Inilah yang saya cari solusi MacOS Sierra. Terima kasih
Sakares
1

Pastikan Anda menjalankan "gem pristine --all" untuk versi ruby ​​yang tepat. Jika / usr / bin / ruby ​​dipanggil ... gunakan "/ usr / bin / gem murni --all". Ini tidak jelas jika Anda menggunakan rvm dan Anda memiliki 10 versi ruby ​​yang diinstal.

Ini memperbaiki masalah saya selama sehari dan kemudian kembali.

Apa yang tampaknya menjadi solusi yang lebih permanen adalah melakukan "rvm reset" untuk memiliki ruby ​​default menjadi versi OSX yang diinstal / usr / bin / ruby ​​dan / usr / bin / gem. Jika saya ingin menggunakan versi ruby ​​yang lebih baru untuk sebuah proyek, saya menggunakan .ruby-version dan .ruby-gemset di direktori root proyek untuk secara eksplisit mengatur versi ruby ​​yang ingin saya gunakan. Tidak ideal ... tetapi seharusnya membuat kesalahan ini hilang.

neuronsong
sumber
0

Dalam hal ini:

rvm get stable

sudo gem pristine --all

skozz
sumber
0

Saya sangat baru menggunakan rail, jadi ini mungkin saran yang sepenuhnya salah arah, tetapi karena tidak ada solusi lain yang bekerja untuk saya, saya pikir saya akan membagikan milik saya.

Mic92 dan Gerry menempatkan saya di jalur yang benar: Saya menggunakan rails syang dapat menyebabkan kesalahan karena menjalankan versi rel yang bisa menjadi versi yang berbeda dari proyek.

Saya mencoba terhubung dengan bin/rails server, saya mendapat kesalahan yang berbeda (permata yang hilang) jadi saya berlaribundle install

Pada titik ini saya mendapatkan kesalahan ketiga ("versi perpustakaan tidak kompatibel"), yang spring stopsembuh.

Kemudian saya berlari rails generate controllerlagi, musim semi dimulai kembali dan semuanya bekerja (saya menangis sedikit)

mrtnmgs
sumber