You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rails 6创建项目报couldn't set additional authenticated data错误

错误原因
  • 你执行rails new时调用的不是rbenv安装的Ruby 2.7.2,而是macOS系统自带的Ruby 2.6。看错误堆栈里的路径/Library/Ruby/Gems/2.6.0、/System/Library/Frameworks/Ruby.framework/Versions/2.6/就能确认,路径里的版本号、gem存放位置全是系统Ruby的,和你配置的2.7.2完全不沾边。
  • macOS自带的系统Ruby是苹果定制编译的,绑定的OpenSSL版本有兼容缺陷,不支持Rails 6.0.5生成加密凭证文件时需要的附加认证数据设置逻辑,直接触发OpenSSL::Cipher::CipherError报错。
  • 根因是rbenv的初始化脚本没加到shell配置里,终端查找命令的时候优先命中了系统路径下的rails程序,根本没走rbenv的版本管理逻辑。
修复步骤
  1. 先验证当前Ruby环境是否正确,执行以下命令:
which ruby
ruby -v

如果输出路径不是以.rbenv/shims/ruby结尾,版本号也不是2.7.2,就确认是rbenv加载失败的问题。
2. 把rbenv初始化配置写入shell配置文件,macOS 12默认用zsh,执行以下命令:

echo 'eval "$(rbenv init - zsh)"' >> ~/.zshrc
source ~/.zshrc

如果你手动切到了bash,就把上面命令里的zsh换成bash,配置文件路径换成~/.bash_profile再执行。
3. 重新检查which ruby和ruby -v的输出,确认已经切换到rbenv管理的Ruby 2.7.2。
4. 清理之前误装到系统Ruby里的Rails,避免后续路径冲突:

sudo gem uninstall rails -v 6.0.5
sudo gem uninstall railties -v 6.0.5
  1. 在rbenv的Ruby 2.7.2环境下重新安装对应版本的Rails:
gem install rails -v 6.0.5
rbenv rehash
  1. 执行which rails确认路径在rbenv的shims目录下,之后再跑rails new myapp -d postgresql就能正常创建项目了。

避坑提示:给rbenv管理的Ruby装gem的时候不要加sudo,sudo会直接绕过rbenv的环境隔离,把gem装到系统Ruby目录里,很容易搞出版本冲突。

内容的提问来源于stack exchange,提问作者gul Ranaa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 18:57:21