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
我遇到了一个错误(我只粘贴了一个 header 以保持它的整洁):
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。开发工具包已安装。设置了环境变量:
PATH
: C:\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 是导致问题的最后支持的版本。这种情况有两种解决方法:
gem 只需使用 DevKit 重新编译即可:
gem install bcrypt --platform=ruby
这将编译源代码并创建所需的 bcrypt_ext.so。
将 Ruby 降级到 2.1。
同样的逻辑也适用于 Nokogiri。
希望对大家有所帮助。
我对 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
我遇到了一个错误(我只粘贴了一个 header 以保持它的整洁):
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。开发工具包已安装。设置了环境变量:
PATH
:C:\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 是导致问题的最后支持的版本。这种情况有两种解决方法:
gem 只需使用 DevKit 重新编译即可:
gem install bcrypt --platform=ruby
这将编译源代码并创建所需的 bcrypt_ext.so。
将 Ruby 降级到 2.1。
同样的逻辑也适用于 Nokogiri。
希望对大家有所帮助。