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

时间:2013-05-26 04:41:29

标签: ruby-on-rails ruby ruby-on-rails-3 homebrew 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>'

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

感谢您阅读我的问题。

8 个答案:

答案 0 :(得分: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

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

答案 1 :(得分:57)

自制软件非常棒,但偶尔也不会与其他一些活动部件配合使用。

brew update && brew upgrade引入libreadline.7.x.dylib,同时自动删除libreadline.6.x.dylib,红宝石依然依赖。{/ p>

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

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

以上假定存在rbenv&#39; ruby-build,当然还有bundler;用你正在使用的任何版本的红宝石替换2.3.1

请注意,不同的自制程序管理库(see my own answer to this, for example

可能会出现类似问题

答案 2 :(得分:25)

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

答案 3 :(得分:21)

我在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 :(得分: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

这取自the ruby-build Wiki和快速谷歌搜索。

答案 5 :(得分:6)

使用mac,El Captain版本,可以通过执行

来解决
rvm reinstall your_ruby_version

(如rvm reinstall ruby-2.3.1

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

答案 6 :(得分:1)

取自github用户@enderahmetyurt(这是唯一适用于我的解决方案)。

解决方案:将gem 'rb-readline'添加到开发组捆绑安装中的Gemfile。

对于愚蠢的“readline”错误,这是最简单的解决方案。

答案 7 :(得分:0)

  

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

     

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