You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

运行rails console报错:Library not loaded: /usr/local/opt/readline/lib/libreadline.7.dylib

解决Ruby 2.3.7 Rails Console的Readline依赖错误

嘿,这个问题我之前也踩过坑!核心原因是你通过rvm安装的Ruby 2.3.7在编译时绑定了旧版本的readline(7.x),但现在brew已经把readline升级到8.x了,导致动态链接库找不到,再加上你新增的pry相关gem依赖readline,直接触发了这个LoadError。给你几个靠谱的解决步骤:

方法一:重新编译Ruby,绑定当前brew的readline

这是最彻底的解决方案,让Ruby直接适配你现在的readline版本:

rvm reinstall 2.3.7 --with-readline-dir=$(brew --prefix readline)

这条命令会重新安装Ruby 2.3.7,并且强制它使用brew当前安装的readline库(也就是8.x版本),从根源上解决版本不匹配的问题。

方法二:创建正确的软链接(快速临时修复)

如果你不想重新编译Ruby,可以直接给readline 8.x创建7.x的软链接,满足Ruby的查找需求:

cd /usr/local/opt/readline/lib
ln -sf libreadline.8.dylib libreadline.7.dylib

注意你之前创建的是指向6.2.dylib,这和错误里要求的7.dylib不匹配,所以要换成上面这条命令。

方法三:排查pry相关gem的冲突

你新增的pry-coolline可能也依赖readline,在修复完链接问题后,可以试试:

  • 临时注释Gemfile里的pry-coolline,运行bundle install后再启动rails console,看是否能正常运行
  • 如果能正常启动,再重新添加pry-coolline,此时Ruby已经能正确加载readline库,应该就不会再出问题了

验证修复

完成上述步骤后,先运行这个命令测试readline是否能正常加载:

ruby -r readline -e "puts Readline::VERSION"

如果能输出当前readline的版本号(比如8.0),再启动rails console应该就正常了。

内容的提问来源于stack exchange,提问作者Jonathan Tuzman

火山引擎 最新活动