web-dev-qa-db-fra.com

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

Je ne peux pas exécuter Rails console en raison 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. Je voudrais continuer à utiliser rbenv au lieu de rvm.

Merci d'avoir lu ma question.

85
wiz

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 exécutant:

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

278
wmmc

Homebrew est génial, mais de temps en temps, il ne joue pas à Nice avec certaines des autres parties mobiles.

Un brew update && brew upgrade A introduit libreadline.7.x.dylib Tout en supprimant automatiquement libreadline.6.x.dylib, Sur lequel Ruby comptait toujours).

Il peut y avoir des moyens plus intelligents 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 du rbenv Ruby-build Et, bien sûr, bundler; remplacez 2.3.1 par la version de Ruby que vous utilisez.

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

58
Giuseppe

Je suis sur OSX, Ruby2.3.0, Rails5. Ajouter gem 'rb-readline' à mon Gemfile a résolu ce problème.

25
Meekohi

J'ai eu la même erreur avec Ruby 2.1.0, et Rails 4.0. Après avoir cherché et essayé beaucoup, finalement ça marche bien :) Voici ce que je fait:

rvm cleanup all
rvm autolibs enable
rvm install 2.1.0 

Les autres voies:

brew update
brew uninstall readline
brew install readline

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

J'espère que c'est utile.

21
Hoa Hoang

Comme Sachin l'a laissé entendre, 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 d'accès aux fichiers, je suppose que vous êtes sur un Mac, donc ce qui suit devrait aider:

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

Ceci a été tiré de le Wiki de Ruby-build et d'une recherche rapide sur Google.

20
pat

Utilisation de mac, El Captain version, il est possible de corriger juste en faisant

rvm reinstall your_Ruby_version

(comme rvm reinstall Ruby-2.3.1)

En espérant que ça aide, bonne chance!

8
violentr

extrait de l'utilisateur de github @enderahmetyurt (c'est la seule solution qui a fonctionné pour moi).

Solution: ajoutez gem 'rb-readline' à votre Gemfile dans groupe de développement et installation du bundle.

C'est la solution la plus simple pour les erreurs stupides de "readline".

1
whataboutme1

essayez d'installer readline et réinstallez votre Ruby

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

0
Sachin Singh