Ruby on Windows导致错误无法加载此类文件bcrypt_ext

时间:2015-03-27 04:28:06

标签: ruby-on-rails ruby windows

尝试在我的Windows 7计算机上运行ruby,无论何时我去rails或rake db:migrate我都会收到以下错误无法加载这样的文件bcrypt_ext。

我的ruby版本是2.2.1我的rails版本是4.2.0而bcrypt版本是3.1.10。当我运行bundle install时,所有的gem都正确安装,但是每当我尝试rake它时都会给我这个错误。任何帮助将不胜感激

6 个答案:

答案 0 :(得分:16)

您需要使用此处所述的内容:https://www.alib.jp/entries/bcrypt_ext_load_error_on_ruby21x

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

答案 1 :(得分:4)

对于Windows 10,bcrypt 3.1.11现在有效,checked in 24144

步骤进行:

  1. 关闭所有rails服务器
  2. 卸载所有版本的bcrypt
  3. 手动安装v3.1.1(gem install bcrypt -v '3.1.11'
  4. 更新项目的宝石文件
  5. 当前版本

    • ruby​​ 2.2.4p230(2015-12-16修订版53155)[i386-mingw32]

    • 操作系统名称:Microsoft Windows 10 Pro

    • 操作系统版本:10.0.10586 N / A Build 10586

答案 2 :(得分:4)

脏的快速解决方法是使用

安装mri版本

gem install bcrypt --platform=ruby

为我工作。

Fetching: bcrypt-3.1.11.gem (100%) Temporarily enhancing PATH to include DevKit... Building native extensions. This could take a while... Successfully installed bcrypt-3.1.11

源: Scala Specification于2015年4月17日发表评论 topac

答案 3 :(得分:4)

我在Window 8.1 64bit,Ruby 2.3.3 64bit,Rails 4.2.10中遇到了同样的问题。

我的快速解决方案:

步骤1:删除gem中的所有bcrypt:gem uninstall bcrypt(如果存在,则选择选项3(全部删除))

第2步:再次安装bcrypt:gem install bcrypt

然后检查bcrypt的版本:gem list bcrypt

步骤3:在项目的Gemfile中,添加:gem 'bcrypt', '3.1.11', platforms: [:ruby, :x64_mingw] 注意:更改bcrypt的合适版本(我的版本:3.1.11)

步骤4:在项目路径中运行命令: bundle install

步骤5:删除不需要的bcrypt: 运行命令:gem uninstall bcrypt 你可以看到某个版本的bcrypt,你应该保留一个版本:bcrypt- [your-version]。 (删除所有版本:bcrypt- [your-version] -x64-mingw32。在mycase中,删除:bcrypt-3.1.11-x64-mingw32)

重启Rails服务器,完成

我认为这个问题因为当我们安装bcrypt时,我们没有指定64位或32位,它与窗口或红宝石(64位或32位)不兼容

答案 4 :(得分:1)

编译的gem二进制文件很可能不包含Ruby 2.2.1的二进制文件。这是因为使用Windows目标交叉编译Ruby存在问题。有关详细信息,请参阅this answer

最佳替代方法是降级为Ruby 2.1.5

你可以尝试自己编译宝石,但这是一个完全不同的野兽。在某些情况下,如nokogiri,甚至不可能。

答案 5 :(得分:1)

Rich Peck解决方案为我提供了一个小小的更新。确保devkit包含在环境路径中。(通过在命令提示符下键入path来检查它)如果未包含它,则需要将devkit/bin and devkit/mingw/bin路径添加到PATH var。

否则 - make:x86_64-w64-mingw32-gcc:找不到命令 - 在制作文件时会抛出错误。

一旦错误得到解决,我就能够解决该文件并解决bcrypt_ext问题。