find_spec_for_exe ': tidak dapat menemukan bundler permata (> = 0.a) (Gem :: GemNotFoundException)

218

Saya menggunakan sudo bundle installdan itu mungkin menjadi penyebab masalah?

Sekarang saya punya:

  • gem -v 2.6.14
  • ruby -v ruby 2.3.5p376 (2017-09-14 revisi 59905) [x86_64-darwin15]
  • jekyll -v jekyll 3.6.2
  • bundle -vBundler versi 1.16.0.pre.3

Saya mendapatkan kesalahan berikut saat mencoba menjalankan bundle exec jekyll serveatau hanyajekyll serve

/Users/myusername/.rvm/rubies/ruby-2.3.5/lib/ruby/site_ruby/2.3.0/rubygems.rb:271:in `find_spec_for_exe': can't find gem bundler (>= 0.a) (Gem::GemNotFoundException)
    from /Users/myusername/.rvm/rubies/ruby-2.3.5/lib/ruby/site_ruby/2.3.0/rubygems.rb:299:in `activate_bin_path'
    from /Users/myusername/.rvm/gems/ruby-2.3.5/bin/bundle:23:in `<main>'
    from /Users/myusername/.rvm/gems/ruby-2.3.5/bin/ruby_executable_hooks:15:in `eval'
    from /Users/myusername/.rvm/gems/ruby-2.3.5/bin/ruby_executable_hooks:15:in `<MacBooMacBook-MacBook-MacBook-Pro-MacBook-PrMacBook-MacBooMacBMaMacBMaMaMaMaMaMaMaMaMacBMaMaMaMacBMa

Juga, ketika mengakses folder di mana saya memiliki blog saya, cd my_pathsaya mendapatkan pesan berikut:

VM menggunakan Gemfile Anda untuk memilih Ruby, semuanya baik-baik saja - Heroku melakukannya juga, Anda dapat mengabaikan peringatan ini dengan 'rvm rvmrc ign Abaikan / Library / WebServer / Documents / blog / Gemfile'. Untuk mengabaikan peringatan untuk semua file, jalankan 'rvm rvmrc warning ignall allGemfiles'. Versi interpreter ruby ​​tidak dikenal (tidak tahu bagaimana menangani): RUBY_VERSION.

Saya tidak tahu bagaimana menyelesaikannya. Saya hanya ingin membuat blog statis saya dan jujur ​​saya tidak tahu tentang Ruby, Permata atau Bundel :) Jadi saya sangat menghargai beberapa wawasan!

Alvaro
sumber
Bisakah ini membantu mungkin: github.com/rvm/rvm/issues/1860
Cyzanfar
@Cyzanfar terima kasih untuk itu! Saya mencobanya, sekarang mendapat kesalahan baru pada proses: stackoverflow.com/questions/47035080/…
Alvaro

Jawaban:

364

Masalahnya dalam kasus saya adalah bahwa Gemfile.lockfile tersebut memiliki BUNDLED_WITHversi 1.16.1dan gem install bundlerversi yang diinstal 2.0.1, jadi ada ketidakcocokan versi ketika mencari ke kanan folder

gem install bundler -v 1.16.1 memperbaikinya

Tentu saja, Anda juga dapat mengubah Anda Gemfile.lock's BUNDLED_WITHdengan terakhir bundlerversi dan menggunakan perangkat lunak baru-baru ini, sebagai Sam3000 menyarankan

Antonio Tapiador
sumber
15
Sebagai alternatif, Anda mungkin ingin mengubah BUNDLED_WITHversi ke versi bundler terbaru. Ini bekerja untuk saya dan juga menyelamatkan saya dari kebutuhan perangkat lunak yang ketinggalan zaman :)
Sam3000
5
Bundler 2 baru saja dirilis, jadi jika Anda tidak menentukan seperti di atas di Dockerfile Anda, Anda akan menemukan kesalahan ini bundler.io/blog/2019/01/03/announcing-bundler-2.html
cameck
Hai @ antonio-tapiador Saya mengalami masalah ini, tetapi saya menggunakan windows (tidak dapat beralih ke linux). Saya sudah menjalankan gem install bundler -v 1.16.1dan sekarang jika gem.bat list bundler saya menjalankan saya mendapatkan bundler (2.0.1, 1.16.1, 1.9.6). I cant mengubah versi saat ini: mengeksekusi bundle.bat _1.16.1 installmemberi saya kesalahan ini: Could not find command "_1.16.1". Apakah Anda punya ide, jadi saya tidak perlu membuat pertanyaan baru? Terima kasih!
Jerman
Sudahlah, saya kehilangan garis bawah pada akhir versi.
Jerman
Terima kasih. Ini juga memecahkan masalah saya yang sama menggunakan ruby ​​v2.5.1p57
widi83
132
gem update --system

akan memperbarui rubygems dan akan memperbaiki masalahnya.

antonpaisov
sumber
3
Hanya untuk mengklarifikasi - seperti yang ditunjukkan @noraj - masalahnya diperkenalkan pada versi baru bundler. Jika Anda mengikuti tautan, solusinya adalah memperbarui RubyGems.
ReggieB
1
gem update --systembekerja untuk saya: ruby 2.5.0 , bundler 2.0.1 , macOS 10.13.6 .
Jagdeep Singh
74

Memperbarui:

Menurut jawaban @ noraj dan komentar @Niels Kristian, perintah berikut harus melakukan pekerjaan.

gem update --system
bundle install

Saya menulis ini jika seseorang mengalami masalah seperti saya.

gem install bundler menunjukkan bahwa semuanya menginstal dengan baik.

Fetching: bundler-1.16.0.gem (100%)
Successfully installed bundler-1.16.0
Parsing documentation for bundler-1.16.0
Installing ri documentation for bundler-1.16.0
Done installing documentation for bundler after 7 seconds
1 gem installed

Saat saya mengetik bundleada kesalahan:

/Users/nikkov/.rvm/gems/ruby-2.4.0/bin/bundle:23:in `load': cannot load such file -- /Users/nikkov/.rvm/rubies/ruby-2.4.0/lib/ruby/gems/2.4.0/gems/bundler-1.16.0/exe/bundle (LoadError)
    from /Users/nikkov/.rvm/gems/ruby-2.4.0/bin/bundle:23:in `<main>'
    from /Users/nikkov/.rvm/gems/ruby-2.4.0/bin/ruby_executable_hooks:15:in `eval'
    from /Users/nikkov/.rvm/gems/ruby-2.4.0/bin/ruby_executable_hooks:15:in `<main>'

Dan dalam folder /Users/nikkov/.rvm/rubies/ruby-2.4.0/lib/ruby/gems/2.4.0/gems/itu tidak ada bundler-1.16.0folder.

Saya memperbaiki ini dengansudo gem install bundler

Nik Kov
sumber
6
Setelah Anda "memperbaikinya", pastikan Anda memperbaiki izin direktori Anda pada .rvm dan .gem
humanity
1
@ kemanusiaan tolong jelaskan lebih terinci, belilah mengedit jawaban saya
Nik Kov
1
@ kemanusiaan chrs untuk jawaban Anda - bisakah Anda bisa menguraikan apa yang Anda maksud dengan memperbaiki izin direktori Anda pada .rvm dan .gem?
BKSpurgeon
1
@Nik kov lokasi folder .rvm dan .gem mungkin ada di dalam folder rumah Anda. Cobalah untuk mengubah izin mereka dengan perintah chmod. Ini berhasil untuk saya.
Souravirus
4
sudo gem install adalah praktik yang buruk, dalam kasus normal semua permata instal harus bekerja tanpa sudo
iamdi
33

Jawaban sebenarnya ada di sini jika Anda mencoba menginstal bundler 2.0.1 atau 2.0.0 karena Bundler membutuhkan RubyGems v3.0.0

Kemarin saya merilis Bundler 2.0 yang memperkenalkan sejumlah perubahan. Salah satu perubahan itu adalah mengatur Bundler untuk meminta RubyGems v3.0.0. Setelah membuat rilis, menjadi jelas bahwa banyak pengguna kami mengalami masalah dengan Bundler 2 yang membutuhkan versi RubyGems yang benar-benar baru.

Kami telah mendengarkan dengan cermat umpan balik dari pengguna dan telah memutuskan untuk mengurangi persyaratan RubyGems ke v2.5.0 minimum. Kami telah merilis versi Bundler baru, v2.0.1, yang menyesuaikan persyaratan ini.

Untuk info lebih lanjut, lihat: https://bundler.io/blog/2019/01/04/an-update-on-the-bundler-2-release.html

noraj
sumber
1
Terima kasih, tautan Anda menyelamatkan saya dari googling masalah
Ilya Konyukhov
Capistrano gagal pada mesin baru tetapi tidak yang lama. Ini memperbaiki masalah bagi saya.
CWitty
1
Itu tidak bisa menjadi "jawaban nyata" untuk pertanyaan OP karena Bundler 2.0 tidak ada pada 2017, walaupun orang pasti akan menemukan halaman ini karena gejalanya sama.
Philihp Busby
Saya mengalami masalah dengan bundler 2.0.1
Fabrizio Bertoglio
Berikut ini adalah beberapa perubahan terbaru pada versi 2.0.0: github.com/bundler/bundler/releases/tag/v2.0.0
Joshua Pinter
31

Ini memperbaikinya:

  1. Hapus Gemfile.lock rm Gemfile.lock
  2. jalankan bundle installlagi

EDIT: JANGAN MELAKUKANNYA DALAM PRODUKSI!

Untuk produksi, buka jawaban ini: https://stackoverflow.com/posts/54083113/revisi

Klonept
sumber
Saya menggunakan Visual Studio Code dan mengunggah dan menerbitkan melalui Azure Devops, yang gagal di Build., Saya baru saja menghapus file kunci secara lokal, berkomitmen dan kemudian mendorong. Build gagal pada langkah Install Gems tetapi sekarang berfungsi.
David Jones
4
Untuk proyek produksi yang ada ini adalah ide yang buruk. Anda akhirnya akan menginstal banyak kode baru (dengan sistem Anda) yang belum diuji.
Intentss
Ya, ini adalah ide yang buruk dan tidak boleh dianggap sebagai perbaikan. Itu membuktikan bahwa jawaban lain (tentang memiliki versi Bundler yang tidak cocok) benar. Menginstal versi Bundler yang benar harus memperbaikinya.
Robin Daugherty
Terima kasih @RobinDaugherty, saya telah mengedit jawaban untuk memperingatkan semua orang untuk tidak melakukannya dalam produksi.
Klonept
Ini seharusnya tidak dilakukan dalam pengembangan juga. Ada alasan bagus untuk file kunci, itu tidak boleh dihapus dalam proyek yang ada. Menginstal versi bundler yang benar pada mesin Anda memperbaiki masalah, menghapus Gemfile.lockharus dianggap sebagai upaya terakhir karena dapat menyebabkan masalah lain.
Robin Daugherty
19

Alasannya adalah lingkungan ruby ​​Anda saat ini, Anda mendapatkan versi yang berbeda dari bundler dengan versi di Gemfile.lock.

  • Cara aman, instal bundler dengan versi yang sama Gemfile.lock, ini tidak akan merusak apa pun jika ada beberapa hal yang tidak kompatibel terjadi.
  • Cara yang sulit, cukup hapus Gemfile.lock, dan jalankan bundle install.
Mathew P. Jones
sumber
2
Terima kasih untuk itu. Tentunya semua orang harus menggunakan versi aman untuk tidak mengacaukan lingkungan dengan permata yang belum diuji . Untuk menginstal bundler dengan versi spesifik, mis. 1.17Gunakangem install bundler -v 1.17
anka
12

Jika Anda mengubah versi ruby ​​yang Anda gunakan rvm use, hapus Gemfile.lock dan coba lagi.

Wawa Loo
sumber
4

Buka Gemfile.lock, yang dapat ditemukan di root folder aplikasi Anda. Gulir ke akhir file dan lihat versi bundler yang digunakan. Kemudian Anda memastikan Anda menginstal versi bundler yang digunakan:

gem install bundler -v x.xx.xx

Atau - hapus Gemfile.lock dan bundle jika Anda memiliki versi bundler yang lebih tinggi diinstal.

Pilihan ada di tangan Anda, teman saya.

Georg Keferböck
sumber
3
Saya tidak akan merekomendasikan menghapus Gemfile.lock karena itu juga akan memperbarui semua permata. Ini dapat menyebabkan masalah besar.
Sandro L
@SandroL - sepenuhnya setuju dengan pernyataan Anda. Namun, itu adalah pilihan bagi mereka yang berani mengambil risiko dan tertarik pada drama.
Georg Keferböck
Terima kasih. Menginstal versi yang saya miliki di Gemfile.lockfolder berhasil!
codeadventurer
2

untuk menginstal bundler yang cocok dengan Gemfile.lockpenggunaan Anda :

gem install bundler -v "$(grep -A 1 "BUNDLED WITH" Gemfile.lock | tail -n 1)"
Naser Mirzaei
sumber
1

Dalam kasus saya saran di atas tidak berhasil untuk saya. Skenario saya sedikit berbeda.

Ketika saya mencoba menginstal bundlermenggunakan gem install bundler.. Tapi saya mulai

ERROR:  While executing gem ... (Gem::FilePermissionError)
    You don't have write permissions for the /Library/Ruby/Gems/2.3.0 directory.

kemudian saya mencoba menggunakan sudo gem install bundlerkemudian saya mulai

ERROR:  While executing gem ... (Gem::FilePermissionError)
  You don't have write permissions for the /usr/bin directory.

kemudian saya mencoba dengan sudo gem install bundler -n /usr/local/bin(Tidak /usr/binberfungsi dalam kasus saya).

Dan kemudian berhasil diinstal bundler

EDIT: Saya menggunakan MacOS, mungkin /usr/bindin tidak berfungsi untuk saya karena alasan itu ( https://stackoverflow.com/a/34989655/3786657 komentar)

Rahul Dess
sumber
0

Saya memiliki masalah yang sama hari ini. Aku memecahkan masalah ini dengan menghapus PATHdalam .bashrcuntuk yang lebih tua rvm.

xhg
sumber
1
Anda menyelamatkan saya, saya telah mengekspor PATH = "$ PATH: $ HOME / .rvm / bin" di bashrc saya, saya menghapusnya dan berfungsi
bormat
0

Masalah saya adalah saya menggunakan RVM dan salah mengaktifkan versi Ruby ...

Semoga ini bisa membantu setidaknya satu orang

Greg Hilston
sumber
0

Menambah banyak jawaban, masalah saya berasal dari keinginan untuk menggunakan batu delima sebagai basis, tetapi kemudian menggunakan rbenv di atas. Ini mengacaukan banyak hal.

Saya memperbaikinya dalam hal ini dengan:

  • Versi Gemfile.lock memang perlu diperbarui - mengubah "BUNDLED WITH" ke versi terbaru pada satu titik mengubah pesan kesalahan, jadi mungkin diperlukan
  • di .bash_profile atau .bashrc, membatalkan pengaturan variabel lingkungan:
unset GEM_HOME
unset BUNDLE_PATH

Setelah itu, rbenv bekerja dengan baik. Tidak yakin bagaimana vv envars itu dimuat di tempat pertama ...

pengguna208769
sumber
-2

Saya menurunkan ruby ​​dari 2.5.x ke 2.4.x dalam kasus khusus saya.

Victor Pudeyev
sumber
-2

Saya harus melakukannya rake clean --force. Lalu lakukan gem install rakedan sebagainya.

Sudhanshu
sumber