Setiap beberapa hari ini akan terjadi ketika melakukan berbagai hal di Ruby CLI (terutama, menggunakan knife
utilitas 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]
bundle install
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 untukclocale-0.0.3
setiap kali saya memulai shell baruDalam kasus saya, saya mulai melihat kesalahan ini setelah menginstal
rvm
Saya mengatasi masalah tersebut dengan:
gem pristine --all
sumber
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 --all
tidak akan membantu, karena permata hanya dapat ditautkan dengan satu versi ruby.sumber
vendor/bundle
, cukup hapusrm -rf vendor/bundle
dan instal ulangbundle install
.gem pristine --all
sampai wajah saya biru dan sekarang saya tahu mengapa itu tidak berhasil ...Saya memperbaikinya dengan:
https://github.com/rvm/rvm/issues/3348
sumber
Ini bekerja untuk saya di MacOs Sierra:
Saya sudah menginstal seluruh xcode sebelum menjalankan perintah di atas, tetapi saya harus melakukan ini, mungkin karena skrip pertama memperbarui beberapa pustaka / dependensi internal.
sumber
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.
sumber
Dalam hal ini:
rvm get stable
sudo gem pristine --all
sumber
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 s
yang 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 stop
sembuh.Kemudian saya berlari
rails generate controller
lagi, musim semi dimulai kembali dan semuanya bekerja (saya menangis sedikit)sumber