LoadError:无法在Windows 2008 x64服​​务器上加载此类文件--bcrypt_ext

时间:2015-11-07 22:49:45

标签: ruby-on-rails windows rubygems

我将我的环境从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宝石!看起来ruby正在使用./或./2.2路径搜索gem,而gem则存储在./2.2.0路径中。这是可配置的吗? 我该如何解决这个问题?

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

谢谢!

9 个答案:

答案 0 :(得分:23)

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

我所做的就是我在网上做了一些建议

gem install bcrypt --platform=ruby

然后,它在irb中工作。

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

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

bcrypt-3.1.10
bcrypt-3.1.10-x64-mingw32

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

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

答案 1 :(得分:12)

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

在本地重建bcrypt gem:

  1. 更改为gem目录\ Ruby22-x64 \ lib \ ruby​​ \ gems \ 2.2.0 \ gems \ bcrypt-3.1.10-x64-mingw32 \ _xt \ mri&gt;
  2. 运行ruby extconf.rb
  3. 运行make
  4. 运行make install
  5. 请注意,只有正确设置了DevKit环境(运行devkitvars.bat),这才有效。

答案 2 :(得分:10)

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

    SELECT DISTINCT
    ACCOUNTDATE,
    PROPERTYNAME,
    rt.management,
    fy.managementFinancialYear
FROM 
    aaa t
CROSS APPLY
    (SELECT 
         SUM(MANAGEMENT) AS management
     FROM
         aaa
     WHERE
         PROPERTYNAME = t.PROPERTYNAME 
         AND ACCOUNTDATE <= t.ACCOUNTDATE 
         and MONTH(accountdate) = MONTH(t.accountdate) 
         and year(accountdate) = year(t.accountdate)) as rt
CROSS APPLY
    (SELECT 
         SUM(MANAGEMENT) AS managementFinancialYear
     FROM
         aaa
     WHERE
         PROPERTYNAME = t.PROPERTYNAME 
         AND ACCOUNTDATE <= t.ACCOUNTDATE 
         and (year(accountdate) * 12 + MONTH(accountdate) - 4) % 12  = (year(t.accountdate) * 12 + MONTH(t.accountdate) - 4) % 12 
         )as fy
WHERE 
    AccountDate BETWEEN @STARTOFMONTH_MAN AND @ENDOFMONTH_MAN
ORDER BY 
    AccountDate

答案 3 :(得分:4)

在Windows 7上对我有用:

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

答案 4 :(得分:1)

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

答案 5 :(得分:1)

以下是适合我的解决方案:

    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

答案 6 :(得分:1)

我遇到了同样的问题:

无法加载此类文件 - bcrypt_ext

Windows 8.1 64位

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

Rails 5.1.4

我的解决方案:

  1. gem uninstall bcrypt-ruby
  2. gem uninstall bcrypt
  3. gem install bcrypt -platform = ruby​​
  4. 将整行添加到Gemfile:
  5. gem'bcrypt',git:'https://github.com/codahale/bcrypt-ruby.git',:require =&gt; 'bcrypt'

    1. 捆绑安装

答案 7 :(得分:0)

这适用于我,将其添加到您的宝石文件中:

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

答案 8 :(得分:-1)

此过程适用于Windows:

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

卸载所有rails程序:

  1. 所有Ruby程序。

  2. RailsInstaller。

  3. 删除所有能够卸载的文件,您必须在内部手动执行:

    C:\ RailsInstaller

    1. 从:
    2. 安装de ruby​​ 2.2版

      http://railsinstaller.org/en

      等一下,它已经开始了。

      MarlonJon.es