繁体   English   中英

Gem 已安装但在 rails 服务器启动时失败

[英]Gem is installed but fails when rails server starts

我对 bcrypt gem 有问题。 我跑了这个:

gem install bcrypt

并得到:

Fetching: bcrypt-3.1.10-x64-mingw32.gem (100%)
Successfully installed bcrypt-3.1.10-x64-mingw32
Parsing documentation for bcrypt-3.1.10-x64-mingw32
Installing ri documentation for bcrypt-3.1.10-x64-mingw32
Done installing documentation for bcrypt after 0 seconds
1 gem installed

我可以在列表中看到已安装的 gem:

bcrypt (3.1.10 x64-mingw32)

当我启动 Rails 时:

rails server

我遇到了一个错误(我只是粘贴了一个标题以保持干净):

C:/Ruby/lib/ruby/gems/2.2.0/gems/bcrypt-3.1.10-x64-mingw32/lib/bcrypt.rb:16:in `require': cannot load such file -- bcrypt_ext (LoadError)

我使用 Windows 和 Ruby 2.2。 已安装 DevKit。 设置环境变量:

  • PATHC:\\Ruby\\devkit\\mingw\\bin;C:\\Ruby\\devkit\\bin
  • RI_DEVKIT : C:\\Ruby\\devkit

为了验证它,我跑了:

make --version

并得到:

GNU Make 3.81
Copyright (C) 2006  Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.

This program built for i686-pc-msys

这对我来说似乎很好。

Nokogiri 也出现了类似的问题。

怎么了?

我做了一些研究,我得到了答案:

gem install检测Ruby 平台。 然后它会自动创建 gem 的名称,最终看起来像这样:

bcrypt-3.1.10-x64-mingw32

这个 gem 应该有一个针对这个特定平台的预编译版本,但是,对于 Ruby 2.2,没有编译的 bcrypt_ext.so。 2.1 是支持的最后一个版本,这导致了问题。 在这种情况下,有两种解决方案:

  1. gem 只需要使用 DevKit 重新编译:

     gem install bcrypt --platform=ruby

    这将编译源代码并创建所需的 bcrypt_ext.so。

  2. 将 Ruby 降级到 2.1。

同样的逻辑也适用于 Nokogiri。

我希望它可以帮助某人。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM