Tidak dapat menjalankan "konsol rel" karena kesalahan dengan garis baca

88

Saya tidak dapat mengeksekusi rails consolekarena kesalahan ini:

localhost:TwitterForZombies wiz$ rails c
/Users/wiz/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/irb/completion.rb:9:in `require': dlopen(/Users/wiz/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/x86_64-darwin12.2.1/readline.bundle, 9): Library not loaded: /usr/local/opt/readline/lib/libreadline.6.2.dylib (LoadError)
  Referenced from: /Users/wiz/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/x86_64-darwin12.2.1/readline.bundle
  Reason: image not found - /Users/wiz/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/x86_64-darwin12.2.1/readline.bundle
    from /Users/wiz/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/irb/completion.rb:9:in `<top (required)>'
    from /Users/wiz/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/railties-3.2.9/lib/rails/commands/console.rb:3:in `require'
    from /Users/wiz/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/railties-3.2.9/lib/rails/commands/console.rb:3:in `<top (required)>'
    from /Users/wiz/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/railties-3.2.9/lib/rails/commands.rb:38:in `require'
    from /Users/wiz/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/railties-3.2.9/lib/rails/commands.rb:38:in `<top (required)>'
    from script/rails:6:in `require'
    from script/rails:6:in `<main>'

Saya telah menginstal readline melalui homebrew. Saya ingin tetap menggunakan rbenv daripada rvm.

Terima kasih telah membaca pertanyaan saya.

ahli
sumber
Kemungkinan duplikat konsol rel tidak dimuat karena libreadline
Santhosh

Jawaban:

279

Saya mengalami masalah yang sama baru-baru ini dengan homebrew dan libreadline.7.x.dylib / libreadline.6.x.dylib

Saya menyelesaikannya dengan menjalankan:

ln -s /usr/local/opt/readline/lib/libreadline.7.0.dylib /usr/local/opt/readline/lib/libreadline.6.dylib

sumber: https://github.com/rails/rails/issues/26658

Will Clarke
sumber
1
Benar-benar hack :) Tapi bekerja dengan baik, untuk saat ini: D Terima kasih!
haslo
18
Menggunakan symlink untuk mengelabui sistem agar menggunakan nomor versi (mayor!) Yang sebenarnya berbeda biasanya merupakan ide yang buruk. Akan lebih baik jika seseorang yang lebih berpengetahuan dapat menjelaskan mengapa perbaikan di atas aman.
Pistos
Anda seorang legenda, terima kasih untuk ini, @wiz seharusnya menandai Anda benar!
Nick Schwaderer
1
Tinjauan sepintas tentang perubahan antara libreadline 6.3 dan 7.0 tidak menunjukkan apa pun yang tampaknya merupakan perubahan yang merusak, diharapkan dalam kasus di mana perangkat lunak mungkin mengandalkan perilaku tidak berdokumen atau buggy. Saya akan merasa nyaman mencoba solusi ini mengingat hal itu.
Lyndsy Simon
58

Homebrew memang bagus, tetapi sesekali tidak menyenangkan dengan beberapa bagian bergerak lainnya.

A brew update && brew upgradedibawa masuk libreadline.7.x.dylibsambil secara otomatis menghapus libreadline.6.x.dylib, yang masih diandalkan oleh ruby.

Mungkin ada cara yang lebih cerdas untuk memperbaiki masalah, tetapi kekerasan berhasil untuk saya:

$ rbenv uninstall 2.3.1
$ rbenv install 2.3.1
$ cd /path/to/my/app
$ bundle

Di atas mengasumsikan kehadiran rbenv ini ruby-builddan, tentu saja, bundler; ganti 2.3.1dengan ruby ​​versi apa pun yang Anda gunakan.

Harap dicatat bahwa masalah serupa dapat terjadi dengan perpustakaan yang dikelola homebrew berbeda ( lihat jawaban saya sendiri untuk ini, misalnya )

Giuseppe
sumber
Apakah hal yang sama baru saja terjadi pada saya - saya bertanya-tanya apakah tidak ada cara bagi Homebrew untuk memperhatikan bahwa beberapa lib ditautkan ke versi lama dari beberapa yang disediakan Homebrew?
slhck
2
Ini bekerja untuk saya di El Capitan, dengan gem install bundlersetelah pemasangan rbenv.
handwovensole
Akankah kesalahan terjadi saat saya menjalankan brew update && brew upgradelagi?
Frank Fang
1
@FrankFang, mungkin atau mungkin tidak, dan bukan hanya untuk kesalahan khusus ini. Setiap kali a brew upgrademengganti pustaka lama APA PUN dengan versi yang lebih baru, ada BEBERAPA kemungkinan program lain di sistem Anda akan mengeluh.
Giuseppe
26

Saya menggunakan OSX, ruby2.3.0, rails5. Menambah gem 'rb-readline'saya Gemfilememperbaiki masalah ini.

Meekohi
sumber
1
gem rb-readline berhasil untuk saya. Saya menambahkannya ke: development,: test group - perbaikan cepat yang bagus!
tnum
21

Saya mendapat kesalahan yang sama dengan Ruby 2.1.0, dan rails 4.0. Setelah mencari dan mencoba banyak, akhirnya berhasil :) Inilah yang saya lakukan:

rvm cleanup all
rvm autolibs enable
rvm install 2.1.0 

Cara lain:

brew update
brew uninstall readline
brew install readline

Perintah autolibs akan memaksa RVM menginstal semua dependensi, jadi Anda tidak perlu mengkhawatirkannya.

Semoga bermanfaat.

Hoa Hoang
sumber
2
Anda mungkin tidak perlu melakukannya cleanup rvm. hanya reinstallversi ruby.
Menukar
20

Seperti yang diisyaratkan Sachin, menginstal readline dan kemudian menginstal ulang ruby ​​adalah pendekatan yang ideal - tetapi detailnya sedikit berbeda untuk rbenv. Mengingat jalur file Anda, saya rasa Anda menggunakan Mac, jadi berikut ini akan membantu:

brew install readline ruby-build
env CONFIGURE_OPTS=--with-readline-dir=`brew --prefix readline` rbenv install 1.9.3-p286

Ini diambil dari Wiki ruby-build dan pencarian cepat di Google.

menepuk
sumber
jangan lupa untuk mengulang setelah melakukan ini
iGbanam
2
Setelah menginstal ulang versi Ruby yang ada dengan readline, menjalankan perintah seperti bundle installmenunjukkan kepada saya banyak peringatan seperti "Abaikan bcrypt-3.1.11 karena ekstensinya tidak dibangun". Seperti yang disarankan dalam jawaban atas pertanyaan ini , gem pristine --allperbaiki semua kesalahan itu sekaligus.
Rory O'Kane
8

Menggunakan mac, El Captainversi, dimungkinkan untuk memperbaikinya hanya dengan melakukan

rvm reinstall your_ruby_version

(suka rvm reinstall ruby-2.3.1)

Semoga ini bisa membantu, semoga berhasil!

kekerasan
sumber
Hanya ini yang perlu saya lakukan.
Pistos
Ini akan menginstal ulang versi Anda saat ini:rvm reinstall $(rvm current)
CTS_AE
Ini adalah solusi paling sederhana, tetapi perlu beberapa saat untuk menginstal ulang. Tetap saja, pendekatan terbaik imho.
f055
1

diambil dari pengguna github @enderahmetyurt (ini adalah satu-satunya solusi yang berhasil untuk saya).

Solusi: Tambahkan gem 'rb-readline'ke Gemfile Anda di grup pengembangan dan pasang bundel .

Ini adalah solusi termudah untuk kesalahan "readline" yang konyol.

whataboutme1
sumber
0

coba instal readline, dan instal ulang ruby ​​Anda

https://rvm.io/packages/readline/

Sachin Singh
sumber
terima kasih telah menjawab, tetapi adakah cara untuk tetap menggunakan rbenv daripada rvm?
wiz