我的rails s
和rails c
突然开始拒绝启动,并出现以下错误。我不记得要更新或删除任何宝石。我们非常感谢您为解决该问题提供的帮助。
incompatible library version - /Users/[me]/projects/[app]/vendor/bundle/ruby/2.6.0/gems/bcrypt-3.1.12/lib/bcrypt_ext.bundle (LoadError)
bcrypt
不是我们项目中明确需要的gem,但由于它是一个依赖项,因此包含在Gemfile.lock
中:bcrypt (3.1.12)
到目前为止,我已经尝试了这些方法,但是出现了相同的错误:
bcrypt
gem uninstall bcrypt -v 3.1.12
You have requested to uninstall the gem:
bcrypt-3.1.12
sorcery-0.14.0 depends on bcrypt (~> 3.1)
If you remove this gem, these dependencies will not be met.
Continue with Uninstall? [yN] y
Successfully uninstalled bcrypt-3.1.12
gem install bcrypt -v 3.1.12
Successfully installed bcrypt-3.1.12
gem pristine --all
这是我检查gem版本后得到的结果:
gem info bcrypt
*** LOCAL GEMS ***
bcrypt (3.1.12)
Author: Coda Hale
Homepage: https://github.com/codahale/bcrypt-ruby
License: MIT
Installed at: /Users/[me]/.rvm/gems/ruby-2.6.2
OpenBSD's bcrypt() password hashing algorithm.
bundle info bcrypt
* bcrypt (3.1.12)
Summary: OpenBSD's bcrypt() password hashing algorithm.
Homepage: https://github.com/codahale/bcrypt-ruby
Path: /Users/[me]/projects/[app]/vendor/bundle/ruby/2.6.0/gems/bcrypt-3.1.12
答案 0 :(得分:1)
[已解决]
[解决方案1] ,我需要在vendor/bundle
文件夹中卸载/重新安装gem,而不是摆弄gem uninstall
和gem install
。我怀疑这是因为系统中的宝石应该与我使用捆绑器使用的宝石无关。
以下是其中涉及的步骤:
使用otool -L
检查您的宝石保存在哪里(我的宝石保存在这里:[project root]/vendor/bundle/ruby/2.6.0/gems/bcrypt-3.1.12/lib/bcrypt_ext.bundle
)
使用bcrypt-3.1.12
删除rm -rf
文件夹中的所有内容。
bundle install --force --path vendor/bundle
重新安装bcrypt-3.1.12
gem。
[解决方案2] ,我最终要做的是用bcrypt
更新bundle update bcrypt
的版本。猜测此更新可以将vendor/bundle
中的gem干净地安装,因为我所有的rails
命令都可以再次开始工作。
bundle update bcrypt
Using bcrypt 3.1.13 (was 3.1.12)
希望这些技巧可以帮助将来遇到此问题的任何人!