启动Ruby 2.3.1+Rails 4.2.8应用时Curb Gem加载libcurl失败求助
解决 macOS 下启动 Rails 时 Curb Gem 找不到 libcurl.4.dylib 的问题
嘿,我之前在 macOS 上跑老版本 Rails(4.2.x + Ruby 2.3.x)的时候也碰到过这个坑!咱们先理清楚问题,再一步步解决:
为啥会报错?
你看到的这个 LoadError,本质是 Curb 0.8.8 这个 gem 在编译的时候,绑定了 macOS 系统自带的 libcurl 库,但系统原生的 libcurl 要么路径不对,要么版本和 Curb 预期的不兼容,导致 Rails 启动时找不到对应的动态库文件。
一步步修复方案
按顺序试下面的方法,一般第一个就能解决:
用 Homebrew 装独立的 curl,重新编译 Curb
系统自带的 curl 问题多,咱们用 Homebrew 装个干净的版本:brew install curl先把旧的 Curb 卸载,再指定用 Homebrew 的 curl 重新安装:
gem uninstall curb gem install curb -- --with-curl-dir=$(brew --prefix curl)给 rbenv/RVM 配置正确的环境变量(如果用了版本管理器)
要是你用 rbenv 或者 RVM,得确保它们能找到 Homebrew 装的 curl,不然可能还是会用系统的。打开你的 shell 配置文件(比如~/.zshrc或者~/.bash_profile),加这几行:export PATH="$(brew --prefix curl)/bin:$PATH" export LDFLAGS="-L$(brew --prefix curl)/lib" export CPPFLAGS="-I$(brew --prefix curl)/include"保存后执行
source ~/.zshrc(对应你的配置文件),再重新装一遍 Curb。换个兼容的 Curb 版本(备选方案)
如果上面的方法都不行,试试换个对 macOS 更友好的 Curb 版本,比如 0.9.10:gem uninstall curb gem install curb -v 0.9.10
验证一下
搞定之后,重新启动 Rails 服务器:
bundle exec rails s
要是没再弹出那个 LoadError,就说明问题解决啦!
内容的提问来源于stack exchange,提问作者user1894919
相关产品推荐
相关产品推荐

