87 votes

Impossible d'exécuter "rails console" en raison d'une erreur avec readline

Je ne peux pas exécuter rails console à cause de cette erreur :

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>'

J'ai installé readline via homebrew. J'aimerais continuer à utiliser rbenv au lieu de rvm.

Merci d'avoir lu ma question.

278voto

wmmc Points 3303

J'ai eu le même problème récemment avec homebrew et libreadline.7.x.dylib / libreadline.6.x.dylib

Je l'ai résolu en courant :

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

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

58voto

Giuseppe Points 1264

Le homebrew est génial, mais de temps en temps, il ne joue pas bien avec certaines des autres parties mobiles.

A brew update && brew upgrade a fait entrer libreadline.7.x.dylib tout en supprimant automatiquement libreadline.6.x.dylib sur lequel ruby s'appuie toujours.

Il existe peut-être des moyens plus astucieux de résoudre le problème, mais la force brute a fonctionné pour moi :

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

Ce qui précède suppose la présence de l'option de rbenv ruby-build et, bien sûr, bundler ; remplacer 2.3.1 avec la version de ruby que vous utilisez.

Veuillez noter que des problèmes similaires peuvent se produire avec différentes bibliothèques gérées par homebrew ( voir ma propre réponse à cette question, par exemple )

26voto

Meekohi Points 646

Je suis sur OSX, ruby2.3.0, rails5. Ajout de gem 'rb-readline' à mon Gemfile a réglé ce problème.

21voto

Hoa Hoang Points 416

J'ai eu la même erreur avec Ruby 2.1.0, et rails 4.0. Après avoir cherché et essayé beaucoup de choses, finalement cela fonctionne bien :) Voici ce que j'ai fait :

rvm cleanup all
rvm autolibs enable
rvm install 2.1.0 

Les autres moyens :

brew update
brew uninstall readline
brew install readline

La commande autolibs forcera RVM à installer toutes les dépendances, donc vous n'avez pas besoin de vous en soucier.

J'espère que c'est utile.

20voto

pat Points 10326

Comme Sachin l'a suggéré, installer readline puis réinstaller ruby est l'approche idéale - mais les détails sont un peu différents pour rbenv. Compte tenu de vos chemins de fichiers, je suppose que vous êtes sur un Mac, donc ce qui suit devrait vous aider :

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

Ceci est tiré de le Wiki ruby-build et une recherche rapide sur Google.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X