尝试在我的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它时都会给我这个错误。任何帮助将不胜感激
答案 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
步骤进行:
gem install bcrypt -v '3.1.11'
)当前版本
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问题。