Консоль rails не загружается из-за libreadline

Я недавно переустановил ruby ​​2.1.2, так как я хотел установить драгоценный камень (ruby-debug-ide)

sudo rvm reinstall 2.1.2 --disable-binary --with-gcc=gcc-4.2

С тех пор я не могу загрузить консоль с помощью bundle exec rails c из-за следующей ошибки:

/Users/ohad/.rvm/gems/[email protected]/gems/activesupport-3.2.11/lib/active_support/dependencies.rb:251:in `require': dlopen(/Users/ohad/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/x86_64-darwin13.0/readline.bundle, 9): Library not loaded: @@[email protected]@/opt/readline/lib/libreadline.6.dylib (LoadError)
  Referenced from: /Users/ohad/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/x86_64-darwin13.0/readline.bundle

Пробовал brew uninstall readline и brew install --build-from-source readline, который работал, но не решил мою проблему.

Ответ 1

Пробежал через это сегодня, чтобы решить эту проблему:

brew rm -f readline

brew install readline

brew link readline --force

Надеюсь, это поможет.

Ответ 2

Основываясь на комментарии к принятому ответу с более высоким голосом, чем ответ, это, по-видимому, самое популярное решение.

Похоже, что рельсы 4.2.6 искали libreadline.6 вместо libreadline. Так что просто нужно создать символическую ссылку.

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

Надеюсь, это поможет другим, кто все еще застрял!

Ответ 3

Я смог решить ту же проблему, переустановив Ruby. На стороне доморощенного переустановка readline (даже из источника) не помогла.

Я использую RVM, поэтому это отсортировало его для меня:

rvm reinstall 2.3.1

Я думаю, что Homebrew, возможно, недавно вытащил readline v7 для некоторого другого пакета, который, как я подозреваю, вполне мог бы стать виновником.

Ответ 4

Получив много положительных отзывов о своем комментарии к сообщению @mauro_oto, я подумал, что отправлю это как ответ:

Для меня cp /usr/local/opt/readline/lib/libreadline.dylib /usr/local/opt/readline/lib/libreadline.6.dylib сделал трюк. Похоже, что рельсы 4.2.6 искали libreadline.6 вместо libreadline. Я, вероятно, должен был бы обозначить это, если честно. Поэтому ln -s /usr/local/opt/readline/lib/libreadline.dylib /usr/local/opt/readline/lib/libreadline.6.dylib более уместен. надеюсь, это поможет другим, кто все еще застрял!

Ответ 6

Ничего из этого не сработало для меня. Я использую osx sierra. Это то, что сработало для меня.

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

Надеюсь, что это поможет кому-то там.

Ответ 7

My ENV: Ruby: 2.2.1, Rails: 4.2.1, macOS Sierra 10.12.4;

Следующая команда работает для меня и моего коллеги:

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

Ответ 8

В OSX с использованием homebrew вы можете указать, какая версия readline активна. например

brew switch readline 6.3.8

(он, вероятно, установлен в /usr/local/Cellar/readline/)

Ответ 9

Это решило мою проблему:

Замените libreadline. {Version}.dylib версией, для которой вы получаете ошибку:

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