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

Byr*_*yrd 6 ruby windows ruby-on-rails

每当我去rails s或rake db:migrate时尝试在我的Windows 7机器上运行ruby我得到以下错误无法加载这样的文件bcrypt_ext.

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

Ric*_*eck 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
Run Code Online (Sandbox Code Playgroud)

  • 这很奇怪.我使用了这个答案,但是`make install`将生成的`.so`文件放在`C:\ Ruby22\lib\ruby​​\site_ruby\2.2.0\i386-msvcrt`中.根据错误消息,宝石并没有在那里寻找它.所以,我手动将其复制到`C:\ Ruby22\lib\ruby​​\gems\2.2.0\gems\bcrypt-ruby-3.1.1.rc1-x86-mingw32\lib`,它运行正常.正如你所看到的,不同版本的宝石,但也许它会帮助downvoter. (3认同)

Phi*_*Ưng 5

我在 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。在我的情况下,删除:bcrypt-3.1.11-x64-mingw32)

重启 Rails 服务器,完成

我认为这个问题是因为当我们安装 bcrypt 时,我们没有指定 64bit 或 32bit ,它与 window 或 ruby​​ ( 64bit 或 32bit )不兼容


Azo*_*olo 0

编译的 gem 二进制文件很可能不包含Ruby 2.2.1. 这是因为在 Windows 目标上交叉编译 Ruby 时存在问题。有关更多详细信息,请参阅此答案。

最好选择是降级到Ruby 2.1.5.

您可以尝试自己编译 gem,但那是完全不同的野兽。在某些情况下,例如nokogiri,这甚至是不可能的。