克隆Hartl的Rails示例项目后执行rails db:migrate遇bcrypt_ext加载错误
解决Rails执行
rails db:migrate时的bcrypt_ext加载错误 我之前帮不少Windows环境下的Rails开发者解决过这个问题,这个bcrypt_ext加载失败本质是bcrypt gem的原生C扩展编译或加载出了问题,尤其是Windows系统下容易出现这类兼容性问题,给你几个靠谱的解决方案:
重新安装bcrypt gem,修复原生扩展
先卸载现有版本,再重新安装适配Windows的版本:gem uninstall bcrypt gem install bcrypt --platform=ruby如果你的项目用bundler管理,也可以直接执行:
bundle update bcrypt或者强制重新安装所有依赖:
bundle install --force锁定兼容的bcrypt版本
有时候新版本的bcrypt和旧版Rails(比如你用的4.x版本)兼容性不好,你可以修改Gemfile里的bcrypt声明,指定一个稳定兼容的版本:gem 'bcrypt', '~> 3.1.11'修改后执行
bundle install更新依赖。改用纯Ruby版本的bcrypt
如果原生扩展始终有问题,可以强制使用纯Ruby实现的bcrypt,不需要编译C扩展。修改Gemfile:gem 'bcrypt', platforms: :ruby执行
bundle install后,再尝试运行rails db:migrate。检查Ruby DevKit配置(Windows专属)
Windows下编译原生gem依赖需要Ruby DevKit,如果没配置好会导致扩展编译失败。确保你已经安装了对应Ruby版本的DevKit,并且执行过以下命令完成配置:ruby dk.rb init ruby dk.rb install
按照上面的步骤试一遍,应该能解决这个加载错误。
内容的提问来源于stack exchange,提问作者dammy
相关产品推荐
相关产品推荐

