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.


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


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 )


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.


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.


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.


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!


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.


Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.