Di komputer kerja dan komputer di rumah saya, saya baru-baru ini memutakhirkan Ruby ke 2.3.1, menggunakan ruby-install
. Saya menggunakan chruby
sebagai switcher Ruby saya.
Saya mulai melihat peringatan ini di terminal saya:
Ignoring bcrypt-3.1.11 because its extensions are not built. Try: gem pristine bcrypt --version 3.1.11
Ignoring bcrypt-3.1.10 because its extensions are not built. Try: gem pristine bcrypt --version 3.1.10
Ignoring binding_of_caller-0.7.2 because its extensions are not built. Try: gem pristine binding_of_caller --version 0.7.2
Ignoring byebug-9.0.5 because its extensions are not built. Try: gem pristine byebug --version 9.0.5
Ignoring byebug-5.0.0 because its extensions are not built. Try: gem pristine byebug --version 5.0.0
Ignoring concurrent-ruby-ext-1.0.2 because its extensions are not built. Try: gem pristine concurrent-ruby-ext --version 1.0.2
Ignoring debug_inspector-0.0.2 because its extensions are not built. Try: gem pristine debug_inspector --version 0.0.2
Pada pekerjaan saya, komputer, daftarnya jauh lebih lama, tetapi mudah diselesaikan. Ketika saya mencoba yang disarankan gem pristine GEM
, itu memberitahu saya tidak dapat menemukan permata, jadi saya berlari gem install GEM
, dan itu menyelesaikannya.
Di rumah, tidak ada yang bekerja.
Hal-hal yang telah saya coba, dari akal sehat dan berbagai pertanyaan Stack lainnya:
gem pristine GEM
gem pristine --all
- mencopot dan menginstal ulang permata
gem update
gem update --system
bundle update
- mencopot dan menginstal ulang
bundler
- mencopot dan menginstal ulang
rails
(Meskipun, itu bukan masalah Rails khusus.) - menghapus
~/.bundle/
- membuka
XCode
dan membiarkannya menginstal beberapa ekstensi (memang perlu melakukannya, tetapi itu tidak memperbaiki apa pun.) - menjalankan
brew doctor
dan menyelesaikan semua masalah kecil, lalubrew update
danbrew upgrade
gem install curb
(Saya tidak bisa membayangkan apa kaitan permata ini dengan masalah ini, tetapi dua orang yang berbeda mencatatnya sebagai langkah terakhir untuk memperbaiki peringatan yang sama.)
bcrypt
dan masih memberi saya dua peringatan tentang hal itu.gem pristine --all
tidak bekerja. Dipecahkan dengan menghapus semua permata termasuk bundler. Kemudian menginstal bundlergem install bundler
dan akhirnya menavigasi kembali ke proyek saya dan menjalankanbundle install
yang menginstal ulang semua permata saya dan semuanya berfungsiJawaban:
Saya menemukan masalah yang tepat hari ini - mendapatkan peringatan seperti ini untuk permata yang bahkan tidak diinstal!
... Ya, ternyata permata telah dipasang - untuk ruby berbeda dari yang saya aktifkan dengan chruby (2.2.3 vs 2.3.1).
Beralih ke semua rubi yang berbeda dan menjalankan
gem pristine --all
semuanya memecahkan masalah.sumber
gem pristine --all
tidak ada gunanya. Lihat jawaban ini di Tanya Berbeda untuk info lebih lanjut.gem pristine --all
memiliki masalah izin, Anda harus memeriksawhich ruby
.brew link --overwrite ruby && source ~/.bash_profile
dan jalankangem pristine --all
dapat membantuSaya mengalami masalah ini dan mengikuti semua perintah yang sama seperti di atas, bahkan melangkah lebih jauh dengan menghapus semua versi Ruby yang saya instal sebelumnya. Namun, kesalahan tetap ada.
Ternyata, ada beberapa permata sisa untuk berbagai versi (yang sebelumnya dihapus) di
~/.gem/ruby/
. Setelah menghapus folder yang tidak lagi saya gunakan, kesalahannya hilang.sumber
Saya juga mengalami masalah ini hari ini dan itu frustrasi karena saya tidak bisa mengetik karena seluruh editor saya menyala merah dengan pesan kesalahan.
Saya tidak sepenuhnya yakin apa yang menyebabkannya, tetapi saya percaya itu karena kami memiliki beberapa versi ruby ATAU beberapa manajer versi ruby diinstal dan mereka menimpa satu sama lain dan jika tidak mengacaukan jalan Anda menuju permata.
The
gem
perintah juga mendapat ditimpa ketika Anda memiliki rbenv dan RVM.Lihat mana yang telah Anda instal dengan mengetik;
Jika salah satu yang diinstal itu akan mengembalikan jalan. Kemudian hapus, pastikan untuk membersihkan semua direktori dan mulai dengan instalasi yang bersih.
Menghapus
Inilah yang saya lakukan untuk rvm ;
Inilah yang saya lakukan untuk rbenv
Pertama, instal https://github.com/meowsus/rbenv-clean , lalu
Pasang kembali
Maka Anda memiliki direktori home bersih untuk bekerja. Saya menginstal ulang rbenv dengan Cara menginstal Ruby 2.1.4 di Ubuntu 14.04 . Dan akhirnya;
sumber
Saya melakukan semua yang disebutkan di atas termasuk
tetapi masalahnya sama bagi saya. Saya baru saja mem-boot ulang Mac saya sebagai harapan terakhir, dan pesan peringatan menghilang.
Aneh, tetapi jika ada yang berjuang dengan masalah ini setelah mencoba semuanya di StackOverflow, coba reboot mesin Anda.
sumber
Jika Anda telah menginstal RVM, mungkin Anda mengalami kesalahan karena Anda telah menginstal versi yang berbeda.
Periksa dan hapus versi yang tidak berguna, tapi saya pikir ini bukan pendekatan yang baik . Pokoknya kesalahan hilang.
Setelah menyegarkan cocoapods, itu harus disuntikkan dalam .rvm GEM_HOME
Mungkin
pod COMMAND
akan melempar kesalahan tentangminitest
permata, jadi -gem install minitest
sumber
TL; DR - Permata Ruby tidak suka Rubi berjalan dari symlinks atau dipindahkan dari tempat dibangunnya (karena tertanamnya shebang)
Jika direktori Ruby dipanggil atau vars environment menunjuk ke direktori symlink'ed, atau disalin atau diganti namanya, pesan ini mungkin. Saya menggunakan chruby dan symlinking
/opt/rubies/
->/usr/local/ruby/
, tetapi logika pencarian-perpustakaan dinamis Ruby tidak cocok dengan ini.Solusi dalam kasus saya adalah mengganti symlink dengan rubi yang sebenarnya di
/opt/rubies/
dan jalankangem pristine --all
di setiap Ruby. Bagi yang lain menggunakan RVM atau Rbenv, semoga sukses tanpa memulai dari awal lagi.Ini mungkin bukan masalah persis Anda, tapi semoga membantu.
sumber
gem pristine --all
di bagian mereka semua. Terima kasih telah membangkitkan pertanyaan mati ini. Aku hampir saja membakar semuanya dan memulai dari awal.Menambahkan rasa saya sendiri di sini. Saya menggunakan
rbenv
diinstal melalui Homebrew dan mendapatkan empat dari pesan "mengabaikan ... ekstensi tidak dibangun" ini. Secara khusus:Saya mencoba banyak hal di utas ini tanpa hasil. Akhirnya dalam kasus saya saya lakukan:
brew uninstall rbenv
rm -rf ~/.rbenv
brew install rbenv
Pada titik ini saya masih mendapatkan kesalahan, tetapi sekarang saya hanya memiliki satu versi Ruby untuk bersaing dengan:
Pada titik ini saya mencoba
sudo gem pristine --all
tetapi ditolak untuk izin pada direktori sistem Permata.Jadi saya pergi dan berlari murni pada setiap permata, seperti
sudo gem pristine bcrypt --version 3.1.12
(dll)Dan akhirnya kesalahan itu hilang.
sumber
Ini adalah utas lama, tetapi saya sendiri baru saja menemukan masalah ini.
Anda tidak perlu me-restart mesin Anda, Anda hanya perlu menyegarkan lingkungan Anda, Anda dapat melakukan ini dengan perintah pengulangan:
Dari halaman manual:
rehash command re-computes the internal hash table of the contents of directories listed in the path environmental variable to account for new commands added.
sumber
rehash
atauhash -r
untuk bash adalah perintah shell yang tersedia di * nix. Ketika shell C dimulai, ia membangun tabel hash dari semua perintah di path-nya: setiap nama perintah dan pathname absolutnya. Jadi, setelah Anda menjalankan csh running, jika program baru ditambahkan ke direktori di sepanjang path, Anda perlu menggunakan perintah rehash shell untuk membangun kembali tabel hash-nya. (lih: docstore.mik.ua/orelly/unix3/upt/ch27_06.htm )Saya memiliki masalah ini tetapi hanya ketika saya memulai
tmux
sesi menggunakantmuxinator
.Ternyata itu karena saya menggunakan
tmuxinator
daribrew
bukannya menginstalnya menggunakangem install
. Mungkin menggunakanchruby
pada saat yang sama berkontribusi pada masalah juga.p / s: Saya juga menghapus rubi yang tidak digunakan dari
~/.gem/ruby
tetapi saya ragu itulah alasan masalah ini diselesaikan untuk saya.sumber
gem pristine --all
Awalnya berlari tidak membantu, tetapi kemudian saya menyadari: skrip yang saya jalankan dimulai dengan baris:#!/usr/bin/ruby
Pada sistem macOS saya (Catalina, tapi saya pikir itu tidak penting), ini menunjuk ke Ruby yang datang dengan sistem, bukan yang diinstal oleh RVM. Lari
gem pristine --all
memperbaiki instalasi RVM, tetapi skrip saya memanggil versi Ruby yang berbeda.Perbaikan untuk saya adalah dengan menggunakan
env
perintah untuk memanggil Ruby mana saja yang ditentukan dalam shell saat iniPATH
. Mengubah baris teratas skrip untuk memperbaikinya:#!/usr/bin/env ruby
sumber
bundle install
menginstal permata (dan ekstensi asli mereka) untuk ruby yang dipilih melalui RVM Ruby switcher, di mana skrip yang merujuk pada sistem Ruby tidak dapat menemukannya. Solusi Anda adalah praktik standar untuk membuat skrip dan permata Ruby berfungsi dengan rubi yang dipasang pengguna ( lihat ).apt purge tmuxinator
dan kemudiangem install tmuxinator
membuatnya bekerja. Saya mungkin harus menginstalnya setiap kali saya memutakhirkan versi ruby non-proyek saya, tetapi saya lebih suka ini. Terima kasih!Menjalankan Mac OS Catalina, brew dan rbenv ...
Setelah menemukan masalah yang tepat hari ini, dan melewati semua jawaban di sini saya akhirnya menemukan alasan lain untuk kesalahan ini:
Ignoring nokogiri 1.10.7 because its extensions are not built. Try: gem pristine nokogiri --version 1.10.7
Dan tentu saja permata murni tidak berhasil.
Masalah saya adalah variabel lingkungan kode GEM_HOME dan GEM_PATH yang dikodekan keras yang menimpa rbenv.
Jadi, periksa bahwa Anda belum menyetel GEM_PATH dan GEM_HOME di ~ / .zshrc
sumber
Menghapus dan menginstal ulang Vagrant juga berfungsi. Ada
unistall.tool
skrip bash yang disertakan dalam gambar .dmg installer yang akan menghapus Vagrant.Temukan solusi ini di sini: Memperbarui Perpanjangan Gelandangan dan Permata Tidak Terpasang
sumber
Saya memiliki masalah yang sama dan saya menggunakan rbenv. Untuk beberapa alasan, pengaturan rbenv global saya hilang. Untuk memperbaiki masalah ini, saya mengatur versi global ke salah satu versi rbenv saya ... misalnya:
rbenv global 2.5.1
sumber
Ini juga masalah ketika Anda mengembangkan di Mac dan kemudian membangun gambar Docker: https://forums.aws.amazon.com/thread.jspa?messageID=879802&tstart=0
sumber
Saran Libby untuk memulai sesi terminal baru (yang dia mengomentari jawaban Sebastian Kim) bekerja untuk saya. Jauh lebih cepat daripada yang lain juga, jadi saya ingin membuatnya menjadi jawaban sehingga lebih terlihat.
sumber
Dalam kasus saya, saya mencoba lari
pristine --all
tetapi saya mendapatkan:Kemudian, saya menghapus konten pada
Users/{{user.name}}/.gem
saat itu karena saya perlu menjalankanbundle install --force
, itu menginstal ulang semuanya, kemudian perintahpristine --all
bekerja seperti yang diharapkansumber
Solusi ini bekerja untuk saya untuk RubyMine IntelliJ
Saya memiliki dua terminal berbeda yang digunakan dan
RVM
danruby<Version>
.Larutan:
Saya harus mengubahnya ke versi RVM agar kesalahannya hilang
Preferences>Languages&Frameworks>Ruby SDK
Kesalahan:
sumber