安装Devise Gem时遭遇Bcrypt安装错误,求解决方案
Devise 安装前置步骤与 bcrypt 安装失败解决方案
一、用 Devise 前的必要前置步骤
Devise 本身没有复杂的前置要求,但它依赖的 bcrypt 属于原生扩展,必须先搞定系统编译环境:
- 确认 Rails 项目已正常初始化,Ruby 3.1.2 + Rails 7.0.4 与 Devise 4.8.x 版本兼容,你的环境满足要求
- 安装系统级编译工具:
- macOS:执行
xcode-select --install安装 Xcode 命令行工具 - Debian/Ubuntu 系:执行
sudo apt-get install build-essential libssl-dev ruby-dev安装编译依赖 - CentOS/RHEL 系:执行
sudo yum install gcc make openssl-devel ruby-devel配置依赖环境
- macOS:执行
二、bcrypt 3.1.18 安装失败的解决办法
1. 补全系统依赖后重试
先把上述系统编译工具安装完整,再重新执行 bundle install,多数情况下可解决问题。
2. 更换兼容的 bcrypt 版本
bcrypt 3.1.18 对 Ruby 3.x 的支持存在小问题,可在 Gemfile 中指定更新的兼容版本:
gem 'bcrypt', '~> 3.1.19' gem 'devise', '~> 4.8', '>= 4.8.1'
之后执行 bundle install
3. 强制使用纯 Ruby 版 bcrypt
如果原生编译仍失败,直接安装纯 Ruby 版本的 bcrypt:
gem install bcrypt --platform=ruby bundle install
或给 Bundler 设置编译参数绕过错误:
bundle config set build.bcrypt --with-cflags="-Wno-error=implicit-function-declaration" bundle install
4. 清理缓存重试
Bundler 缓存可能引发异常,清理后重新安装:
bundle clean --force bundle install
5. 检查 Ruby 环境
若使用 rbenv、rvm 等版本管理器,确保 Ruby 3.1.2 安装正常:
- rbenv 用户:执行
rbenv rehash刷新环境 - rvm 用户:执行
rvm use 3.1.2切换版本
之后重新执行安装命令
内容的提问来源于stack exchange,提问作者sara
相关产品推荐
相关产品推荐

