【发布时间】:2016-10-14 00:50:14
【问题描述】:
我被要求查看一些 Ruby 代码。开发人员运行 OSX,我在 Windows 上。在 OSX 上一切正常,但 Scrypt 2.1.1 出现错误。
Ruby 要求我运行:gem install scrypt -v '2.1.1',这会导致错误。
当我执行 gem install scrypt -v '2.1.1' --platform=ruby 时,情况正好相反,所有 gem 都已安装。
现在当我重新创建或更新 GemFile 时,我仍然收到错误,再次建议运行 gem install scrypt -v '2.1.1'。
我得到的输出是:
Installing scrypt 2.1.1 with native extensions
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.
current directory: <MyProject>/vendor/bundle/ruby/2.3.0/gems/scrypt-2.1.1/ext/scrypt
C:/Ruby23-x64/bin/ruby.exe -rubygems <MyProject>/vendor/bundle/ruby/2.3.0/gems/rake-11.2.2/exe/rake RUBYARCHDIR=<MyProject>/vendor/bundle/ruby/2.3.0/extensions/x64-mingw32/2.3.0/scrypt-2.1.1 RUBYLIBDIR=<MyProject>/vendor/bundle/ruby/2.3.0/extensions/x64-mingw32/2.3.0/scrypt-2.1.1
rake aborted!
LoadError: cannot load such file -- ffi_c
<MyProject>/vendor/bundle/ruby/2.3.0/gems/ffi-1.9.10-x64-mingw32/lib/ffi.rb:6:in `rescue in <top (required)>'
<MyProject>/vendor/bundle/ruby/2.3.0/gems/ffi-1.9.10-x64-mingw32/lib/ffi.rb:3:in `<top (required)>'
<MyProject>/vendor/bundle/ruby/2.3.0/gems/ffi-compiler-0.1.3/lib/ffi-compiler/compile_task.rb:4:in `<top (required)>'
<MyProject>/vendor/bundle/ruby/2.3.0/gems/scrypt-2.1.1/ext/scrypt/Rakefile:1:in `<top (required)>'
<MyProject>/vendor/bundle/ruby/2.3.0/gems/rake-11.2.2/exe/rake:27:in `<main>'
LoadError: cannot load such file -- 2.3/ffi_c
<MyProject>/vendor/bundle/ruby/2.3.0/gems/ffi-1.9.10-x64-mingw32/lib/ffi.rb:4:in `<top (required)>'
<MyProject>/vendor/bundle/ruby/2.3.0/gems/ffi-compiler-0.1.3/lib/ffi-compiler/compile_task.rb:4:in `<top (required)>'
<MyProject>/vendor/bundle/ruby/2.3.0/gems/scrypt-2.1.1/ext/scrypt/Rakefile:1:in `<top (required)>'
<MyProject>/vendor/bundle/ruby/2.3.0/gems/rake-11.2.2/exe/rake:27:in `<main>'
LoadError: cannot load such file -- ffi-compiler/compile_task
<MyProject>/vendor/bundle/ruby/2.3.0/gems/scrypt-2.1.1/ext/scrypt/Rakefile:1:in `<top (required)>'
<MyProject>/vendor/bundle/ruby/2.3.0/gems/rake-11.2.2/exe/rake:27:in `<main>'
(See full trace by running task with --trace)
rake failed, exit code 1
Gem files will remain installed in <MyProject>/vendor/bundle/ruby/2.3.0/gems/scrypt-2.1.1 for inspection.
我在 Google 和 Bing 上进行了查看和搜索,但没有找到解决方案。
希望社区中的某个人可以帮助我找到解决方案。
谢谢, 伊万
【问题讨论】:
-
你要么没有安装 devkit,要么你的注册表搞砸了。看看这里的步骤:stackoverflow.com/a/21610123/1482694
-
devKit 已安装并且注册表没有弄乱,或者至少链接文章中的所有检查都成功通过。尝试了 32 位安装,因为我使用的是 64 位安装并且遇到了同样的问题。
-
所以你已经尝试了这里列出的所有内容:github.com/oneclick/rubyinstaller/wiki/…?
-
是的,等等。我在 Scrypt GIT 论坛上发布了这个问题。 Gem 开发人员在他的 GIT 页面上回复我的问题时发表评论:FFI 必须预编译。解决该问题的唯一方法是: 1. 在您的平台上手动构建 FFI gem 并安装本地副本 o 克隆 FFI github repo o bundle install o rake gem:package o gem install ffi-1.xxgem 2. 跳转在windows 10 Insider预览快圈并使用Linux仿真层ohowtogeek.com/249966/…
标签: ruby windows rubygems scrypt