Rails加载错误-bcrypt的库版本不兼容

时间:2019-06-10 03:22:30

标签: ruby-on-rails ruby rubygems bcrypt

我的rails srails 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)

到目前为止,我已经尝试了这些方法,但是出现了相同的错误:

  1. 根据我的suggestion在系统中卸载和安装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
  1. gem pristine --all

这是我检查gem版本后得到的结果:

  1. 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.
  1. 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

1 个答案:

答案 0 :(得分:1)

[已解决]

[解决方案1] ,我需要在vendor/bundle文件夹中卸载/重新安装gem,而不是摆弄gem uninstallgem install。我怀疑这是因为系统中的宝石应该与我使用捆绑器使用的宝石无关。

以下是其中涉及的步骤:

  1. 使用otool -L检查您的宝石保存在哪里(我的宝石保存在这里:[project root]/vendor/bundle/ruby/2.6.0/gems/bcrypt-3.1.12/lib/bcrypt_ext.bundle

  2. 使用bcrypt-3.1.12删除rm -rf文件夹中的所有内容。

  3. 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)

希望这些技巧可以帮助将来遇到此问题的任何人!