在Windows上的Ruby导致错误无法加载这样的文件bcrypt_ext

试图在我的Windows 7机器上运行ruby,每当我去Rails或耙数据库:迁移我得到以下错误无法加载这样的文件bcrypt_ext。

我的ruby版本是2.2.1我的rails版本是4.2.0和bcrypt版本是3.1.10。 所有的gem安装正确,当我运行捆绑安装,但是每当我尝试耙它给我这个错误。 任何帮助将不胜感激

你需要使用它在这里说的: 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 

对于Windows 10,现在可以运行bcrypt 3.1.11,并在24144中进行检查

脚步:

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

当前版本

  • 红宝石2.2.4p230(2015-12-16修改53155)[i386-mingw32]

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

  • OS版本:10.0.10586不适用生成10586

肮脏的快速解决方法是安装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

来源: topac评论于2015年4月17日https://github.com/codahale/bcrypt-ruby/issues/116

编译的gem二进制文件很可能不包含Ruby 2.2.1二进制文件。 这是因为交叉编译Ruby与Windows目标存在问题。 看到这个答案的更多细节。

最好的选择是降级到Ruby 2.1.5

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

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

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

一旦错误得到解决,那么我能够使文件和bcrypt_ext问题得到解决。

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

我的快速解决方案

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

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

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

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

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

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

重新启动Rails切断,完成

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