由于readline错误,无法执行"rails console"

wiz*_*wiz 86 ruby homebrew ruby-on-rails ruby-on-rails-3 rbenv

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>'
Run Code Online (Sandbox Code Playgroud)

我通过自制软件安装了readline.我想继续使用rbenv而不是rvm.

感谢您阅读我的问题.

小智 278

我最近遇到了与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
Run Code Online (Sandbox Code Playgroud)

来源:https://github.com/rails/rails/issues/26658

  • 使用符号链接来诱骗系统使用实际上不同的(主要!)版本号通常是一个坏主意.如果知识渊博的人可以解释为什么上述修复是安全的,那将是件好事. (18认同)

Giu*_*ppe 58

Homebrew很棒,但偶尔也不会和其他一些活动部分一起玩得很好.

A 自动移除时brew update && brew upgrade引入,红宝石依然依赖.libreadline.7.x.dyliblibreadline.6.x.dylib

可能有更聪明的方法来解决这个问题,但蛮力对我有用:

$ rbenv uninstall 2.3.1
$ rbenv install 2.3.1
$ cd /path/to/my/app
$ bundle
Run Code Online (Sandbox Code Playgroud)

以上假定存在rbenv ruby-build,当然,bundler; 替换2.3.1为您正在使用的任何版本的红宝石.

请注意,不同的自制程序管理库可能会出现类似的问题(例如,请参阅我自己的答案)

  • 这对我来说是El Capitan,在rbenv安装之后有一个`gem install bundler`. (2认同)

Mee*_*ohi 25

我在OSX上,ruby2.3.​​0,rails5.添加gem 'rb-readline'到我Gemfile修复此问题.


Hoa*_*ang 21

我在Ruby 2.1.0和rails 4.0中遇到了同样的错误.搜索并尝试了很多,最后它运作良好:)这是我做的:

rvm cleanup all
rvm autolibs enable
rvm install 2.1.0 
Run Code Online (Sandbox Code Playgroud)

其他方式:

brew update
brew uninstall readline
brew install readline
Run Code Online (Sandbox Code Playgroud)

autolibs命令将强制RVM安装所有依赖项,因此您无需担心它.

希望它有用.

  • 你可能不需要`清理rvm`.只是'重新安装'红宝石版本. (2认同)

pat*_*pat 20

正如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
Run Code Online (Sandbox Code Playgroud)

这是从ruby-build Wiki和快速谷歌搜索中获取的.

  • 在使用readline重新安装现有的Ruby版本之后,运行诸如`bundle install`之类的命令会向我发出很多警告,例如"忽略bcrypt-3.1.11因为它的扩展未构建".正如[这个问题]的答案中所建议的那样(http://apple.stackexchange.com/questions/147939/ruby-on-os-x-10-9-ignoring-gems-because-extensions-are-not-built ),`gem pristine --all`一次修复了所有这些错误. (2认同)

vio*_*ntr 8

使用mac,El Captainversion,可以通过执行来修复

rvm reinstall your_ruby_version
Run Code Online (Sandbox Code Playgroud)

(像rvm reinstall ruby-2.3.1)

希望这有帮助,祝你好运!


Sac*_*ngh 0

尝试安装 readline,然后重新安装你的 ruby

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