Не удается выполнить "консоль рельсов" из-за ошибки с readline

Я не могу выполнить rails console из-за этой ошибки:

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

Я установил readline через homebrew. Я бы хотел использовать rbenv вместо rvm.

Спасибо, что прочитали мой вопрос.

Ответ 1

У меня была такая же проблема недавно с homebrew и libreadline.7.x.dylib/libreadline.6.x.dylib

Я решил его запустить:

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

источник: https://github.com/rails/rails/issues/26658

Ответ 2

Homebrew отлично, но время от времени он не играет с некоторыми другими движущимися частями.

A brew update && brew upgrade ввел libreadline.7.x.dylib, автоматически удаляя libreadline.6.x.dylib, на который по-прежнему полагался ruby.

Там могут быть более умные способы исправить проблему, но грубая сила сработала для меня:

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

Вышеприведенное предполагает наличие rbenv ruby-build и, конечно, bundler; замените 2.3.1 любой версией рубина, который вы используете.

Обратите внимание, что подобные проблемы могут возникать при использовании различных библиотек, управляемых доморощенным (см. мой собственный ответ на этот вопрос, например)

Ответ 3

Я получил ту же ошибку с Ruby 2.1.0 и rails 4.0. После долгого поиска и многого, наконец, он хорошо работает:) Вот что я сделал:

rvm cleanup all
rvm autolibs enable
rvm install 2.1.0 

Другие способы:

brew update
brew uninstall readline
brew install readline

Команда autolibs заставит RVM установить все зависимости, поэтому вам не нужно беспокоиться об этом.

Надеюсь, что это будет полезно.

Ответ 4

Как намекнул Sachin, установка readline, а затем переустановка Ruby - идеальный подход, но детали немного отличаются для rbenv. Учитывая ваши пути к файлам, я предполагаю, что вы на Mac, поэтому следующее должно помочь:

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

Это было взято из в Ruby-build Wiki и быстрый поиск в google.

Ответ 5

Я на OSX, ruby2.3.0, rails5. Добавление gem 'rb-readline' к моему Gemfile исправило эту проблему.

Ответ 6

Используя версию mac, El Captain, можно исправить, просто сделав

rvm reinstall your_ruby_version

(например, rvm reinstall ruby-2.3.1)

Надеюсь, это поможет, удачи!

Ответ 8

взято из github user @enderahmetyurt (это единственное решение, которое сработало для меня).

Добавьте gem 'rb-readline' в свой Gemfile в группе разработки и установки пакета.

Это самое простое решение для глупых ошибок "readline".