LoadError: cannot load such file -- bcrypt_ext on Windows 2008 x64 server

LoadError: cannot load such file -- bcrypt_ext on Windows 2008 x64 server

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

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

我删除了 Gemfile.lock 和 运行 捆绑安装以从 b运行d 新环境开始。一切看起来都很好,但我收到错误:

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 相同的问题,我使用以下解决方案解决了这个问题: 使用 Juloi Elixir 的解决方案并从本地副本安装 Nokogiri。

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

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

谢谢!

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

在本地重建 bcrypt gem:

  1. 切换到 gem 目录 \Ruby22-x64\lib\ruby\gems.2.0\gems\bcrypt-3.1.10-x64-mingw32\ext\mri>
  2. 运行 ruby extconf.rb
  3. 运行 使
  4. 运行 安装

请注意,这仅在您的 DevKit 环境设置正确时有效 (运行 devkitvars.bat)。

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

嗯,我所做的是听从一些网上的建议,做了一个

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 构建的文件夹,因此它可以正常工作。我删除了第二个文件夹的内容,将第一个文件夹的内容复制进去。

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

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

在 Windows 7 上对我有用的内容:

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

@user1185081 的解决方案在 windows 机器上对我有用。我 运行 遵循命令并像魔术一样工作:

$ cd C:\RailsInstaller\Ruby2.2.0\lib\ruby\gems.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

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

    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

此过程适用于 windows:

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

卸载所有 rails 个程序:

  1. 所有 Ruby 个程序。

  2. RailsInstaller.

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

C:\RailsInstaller

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

http://railsinstaller.org/en

等一下,已经走了

MarlonJon.es

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

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

我遇到了同样的问题:

无法加载此类文件 — 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 安装 bcrypt –platform=ruby
  4. 将这一整行添加到 Gemfile:

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

  1. 捆绑安装