【问题标题】:LoadError: cannot load such file -- bcrypt_ext on Windows 2008 x64 serverLoadError: cannot load such file -- bcrypt_ext on Windows 2008 x64 server
【发布时间】:2016-02-08 21:29:16
【问题描述】:

我将环境从 Ruby 2.0.0 升级到 2.2.3。

我还升级(覆盖)了 DevKit,并重新运行 ruby​​ dk.rb install。

我删除了 Gemfile.lock 并运行 bundle install 以开始一个全新的环境。一切看起来都很好,但我得到了错误:

E:\Projects\development\Stairs>rake db:migrate 
rake aborted!
LoadError: cannot load such file -- bcrypt_ext
E:/Projects/development/Stairs/config/application.rb:7:in `<top (required)>'
E:/Projects/development/Stairs/Rakefile:4:in `<top (required)>'
LoadError: cannot load such file -- 2.2/bcrypt_ext
E:/Projects/development/Stairs/config/application.rb:7:in `<top (required)>'
E:/Projects/development/Stairs/Rakefile:4:in `<top (required)>'
(See full trace by running task with --trace)

我第一次遇到与 Nokogiri 相同的问题,我使用此解决方案解决了这个问题:Nokogiri load error 使用 Juloi Elixir 的解决方案并从本地副本安装 Nokogiri。

但我不想做这个 foreach gem!看起来 ruby​​ 正在使用 ./ 或 ./2.2 路径搜索 gem,而 gem 存储在 ./2.2.0 路径中。这是可配置的吗? 我该如何解决这个问题?

Note: Gemfile contains gem 'bcrypt', '~> 3.1.10'

谢谢!

【问题讨论】:

  • 注释掉 bcrypt gem 可以运行迁移,但我需要 bcrypt 来运行 rails 应用程序。我不认为这是 bcrypt 问题,可能是我不明白的安装问题?
  • Devise 4.5.0 和 BCrypt 3.1.12 修复了这个问题。卸载所有 bcrypts (gem uninstall bcrypt) 并再次运行 bundle

标签: ruby-on-rails windows rubygems


【解决方案1】:

我花了整整一个小时来解决这个问题。

好吧,我所做的是我按照网上的一些建议做了一个

gem install bcrypt --platform=ruby

然后,它在 irb 中起作用了。

irb(main):001:0> require 'bcrypt'
=> true

后来当我不得不进行捆绑安装时,由于某些奇怪的原因,rails 安装了另一个 bcrypt,错误又回来了。所以我的 gem 根目录中有两个文件夹。

bcrypt-3.1.10
bcrypt-3.1.10-x64-mingw32

所以,因为第一个文件夹是使用 devkit 构建的,所以它可以工作。我删除了第二个文件夹的内容并将第一个文件夹的内容复制到其中。

在我写这篇文章时似乎正在工作。

【讨论】:

  • 我在安装 'platform=ruby' bcrypt 后运行了 bundle install,但它没有重新安装了 '-x64-mingw32' 版本。也许较新的bundler 可以识别现有版本?无论如何,您可以从gem remove bcrypt 开始,这样您就不必重命名目录。使用gem list bcrypt --local 列出您的所有版本。
【解决方案2】:

解决方案在这里:bcrypt-ruby@github:

在本地重建 bcrypt gem:

  1. 切换到 gem 目录 \Ruby22-x64\lib\ruby\gems\2.2.0\gems\bcrypt-3.1.10-x64-mingw32\ext\mri>
  2. 运行 ruby​​ extconf.rb
  3. 运行 make
  4. 运行 make install

请注意,只有正确设置了 DevKit 环境(运行 devkitvars.bat),这才有效。

【讨论】:

  • 我没有在我的 shell 中识别 make 命令 :( ,安装了 devkit 并运行了 devkitvars.bat
  • 对于没有make 命令的任何人:将C:\devkit\mingw\bin 添加到您的PATH。
  • 我将C:\devkit\mingw\bin 添加到我的PATH 中,但我仍然无法运行make。出于某种原因,我不得不在cmd 中导航到C:\devkit\mingw\bin,运行devkitvars.bat,然后我可以运行make。关闭控制台后,我失去了make 的能力。从here.得到想法
  • 我不仅要添加C:\RailsInstaller\DevKit\mingw\bin 到我的PATH,还要添加C:\RailsInstaller\DevKit\bin,因为makegcc(需要重新编译gem)位于不同的文件夹中(?)。
  • 编译了6个文件直到失败:c:/devkit2/mingw/bin/../lib/gcc/x86_64-w64-mingw32/4.7.2/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -lgmp collect2.exe: error: ld returned 1 exit status make: *** [bcrypt_ext.so] Error 1
【解决方案3】:

@user1185081 的解决方案在 Windows 机器上为我工作。我运行了以下命令并像魔术一样工作:

$ cd C:\RailsInstaller\Ruby2.2.0\lib\ruby\gems\2.2.0\gems\bcrypt-3.1.10-x86-mingw32\ext\mri  
$ ruby extconf.rb
$ C:\<DevKit Path>\devkitvars.bat  (assuming you have devkit installed)(Ran this instead of running "make" because it was not recognized as an internal or external command)
$ make install

【讨论】:

  • 在从 rasils 2.3 / 1.9 迁移到 raisd 5.0/3.2 后,经过 10 个小时的清理和重复,你成就了我的一天
  • 编译了6个文件,直到失败。 linking shared-object bcrypt_ext.so c:/devkit2/mingw/bin/../lib/gcc/x86_64-w64-mingw32/4.7.2/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -lgmp collect2.exe: error: ld returned 1 exit status make: *** [bcrypt_ext.so] Error 1
【解决方案4】:

在 Windows 7 上什么对我有用:

  1. gem uninstall bcrypt 卸载所有版本的 bcrypt,包括那些列为依赖项的版本
  2. gem install bcrypt重新安装
  3. bundle install

【讨论】:

  • 安装完全相同的版本。
【解决方案5】:

就我而言,在Gemfile 中将旧版本指定为 bcrypt 是导致错误的原因。我去掉了一个版本号,运行bundle update bcrypt,就解决了。

【讨论】:

    【解决方案6】:

    这是对我有用的解决方案:

        C:\> gem uninstall brcypt
        C:\> gem install --no-ri --no-rdoc bcrypt
        C:\> cd (path to gems root)\bcrypt-3.1.7-x86-mingw32\ext\mri
        C:\(path to gems root)\bcrypt-3.1.7-x86-mingw32\ext\mri> ruby extconf.rb
        C:\(path to gems root)\bcrypt-3.1.7-x86-mingw32\ext\mri> make
        C:\(path to gems root)\bcrypt-3.1.7-x86-mingw32\ext\mri> make install
    

    【讨论】:

      【解决方案7】:

      我遇到了同样的问题:

      无法加载此类文件 — bcrypt_ext


      Windows 8.1 64 位

      ruby 2.3.3p222(2016-11-21 修订版 56859)[i386-mingw32]

      Rails 5.1.4


      我的解决方案:

      1. gem 卸载 bcrypt-ruby
      2. gem 卸载 bcrypt
      3. gem install bcrypt –platform=ruby
      4. 将这一整行添加到 Gemfile:

      gem 'bcrypt', git: 'https://github.com/codahale/bcrypt-ruby.git', :require => 'bcrypt'

      1. 捆绑安装

      【讨论】:

      • 不。同样的问题。可能第 4 步才是真正解决您的问题的方法
      【解决方案8】:

      这对我有用,将其添加到您的 gems 文件中:

      gem 'bcrypt', '~> 3.1.7', platform: :ruby
      

      【讨论】:

        【解决方案9】:

        这个过程是针对windows的:

        问题在于系统上安装的程序。

        卸载所有rails程序:

        1. 所有 Ruby 程序。

        2. RailsInstaller。

        删除所有可以卸载的文件,你必须在里面手动操作:

        C:\RailsInstaller

        1. 从以下位置安装 de ruby​​ 2.2 版:

        http://railsinstaller.org/en

        稍等片刻,它已经开始了。

        MarlonJon.es

        【讨论】:

        • 删除所有 Ruby 和 Rails 可执行文件是一个糟糕的主意。有些人有多个 Ruby 版本、多个 Rails 版本和成千上万的 gem。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-04-10
        • 2014-03-08
        • 2022-01-21
        • 1970-01-01
        • 2023-03-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多