ruby-on-rails - Gem::Ext::BuildError:错误:无法构建 gem native 扩展 Bcrypt-Ruby

标签 ruby-on-rails ruby macos gem

我正在制作一个 Rails 应用程序并刚刚升级到 Yosemite,我认为在更新期间一切都崩溃了。昨晚当我将所有代码 checkin github 时一切正常。我昨晚更新了我的电脑到优胜美地。今天我运行了 gem install bcrypt-ruby 并且一切都崩溃了。我有;

  1. 运行 xcodebuild -license
  2. 更新的 bundler
  3. 运行 brew install rbenv ruby​​-build rbenv-gem-rehash 以获取最新的 ruby​​
  4. 运行 brew install coreutils

但这并没有奏效。

环境 OSX Yosemite 10.10rbenv 0.4.0ruby 2.1.3p242(2014-09-19 修订版 47630 ) [x86_64-darwin14.0], brew 0.9.5`

错误的来源是我的 Rails 应用程序:

gem 文件

gem 'rails', '4.1.5'
gem 'pg' 
gem 'uglifier', '>= 1.3.0'
gem 'jquery-rails'
gem 'turbolinks'
gem 'jbuilder', '~> 2.0'
gem 'sdoc', '~> 0.4.0',          group: :doc
gem 'spring',        group: :development
gem 'bcrypt-ruby'

group :test, :development do
  gem 'rspec-rails', "~> 2.14"
end
group :test do
  gem 'capybara', "2.1.0"
  gem 'factory_girl_rails', '~> 4.2.1'
end

我在运行 bundle install 时遇到错误。这是完整的堆栈跟踪(所有 /users// 都来自取出名称 ;)

 Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

    /Users//.rbenv/versions/2.0.0-p247/bin/ruby -r ./siteconf20141027-60319-1lss4fm.rb extconf.rb 
creating Makefile

make "DESTDIR=" clean

make "DESTDIR="
compiling bcrypt_ext.c
couldn't understand kern.osversion `14.0.0'
In file included from /Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby.h:33,
                 from bcrypt_ext.c:1:
/Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/ruby.h:51:21: error: string.h: No such file or directory
/Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/ruby.h:61:21: error: stdint.h: No such file or directory
/Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/ruby.h:64:23: error: inttypes.h: No such file or directory
/Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/ruby.h:68:19: error: stdio.h: No such file or directory
In file included from /Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/ruby.h:70,
                 from /Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby.h:33,
                 from bcrypt_ext.c:1:
/Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/defines.h:29:21: error: stdlib.h: No such file or directory
In file included from /Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/ruby.h:194,
                 from /Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby.h:33,
                 from bcrypt_ext.c:1:
/usr/local/Cellar/apple-gcc42/4.2.1-5666.3/bin/../lib/gcc/i686-apple-darwin11/4.2.1/include/limits.h:10:25: error: limits.h: No such file or directory
In file included from /Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/ruby.h:1567,
                 from /Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby.h:33,
                 from bcrypt_ext.c:1:
/Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/missing.h:23:45: error: math.h: No such file or directory
In file included from /Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/ruby.h:1568,
                 from /Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby.h:33,
                 from bcrypt_ext.c:1:
/Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/intern.h:36:23: error: sys/types.h: No such file or directory
/Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/intern.h:40:22: error: sys/time.h: No such file or directory
In file included from /Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/intern.h:43,
                 from /Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/ruby.h:1568,
                 from /Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby.h:33,
                 from bcrypt_ext.c:1:
/Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/st.h:140: error: expected declaration specifiers or ‘...’ before ‘uint32_t’
In file included from /Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/ruby.h:1568,
                 from /Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby.h:33,
                 from bcrypt_ext.c:1:
/Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/intern.h:326: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘rb_fdset_t’
/Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/intern.h:416: error: expected declaration specifiers or ‘...’ before ‘fd_set’
/Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/intern.h:416: error: expected declaration specifiers or ‘...’ before ‘fd_set’
/Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/intern.h:416: error: expected declaration specifiers or ‘...’ before ‘fd_set’
/Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/intern.h:416: warning: ‘struct timeval’ declared inside parameter list
/Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/intern.h:416: warning: its scope is only this definition or declaration, which is probably not what you want
/Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/intern.h:417: error: expected declaration specifiers or ‘...’ before ‘rb_fdset_t’
/Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/intern.h:417: error: expected declaration specifiers or ‘...’ before ‘rb_fdset_t’
/Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/intern.h:417: error: expected declaration specifiers or ‘...’ before ‘rb_fdset_t’
/Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/intern.h:417: warning: ‘struct timeval’ declared inside parameter list
/Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/intern.h:418: warning: ‘struct timeval’ declared inside parameter list
/Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/intern.h:514: error: expected declaration specifiers or ‘...’ before ‘mode_t’
/Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/intern.h:593: error: expected declaration specifiers or ‘...’ before ‘pid_t’
/Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/intern.h:607: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘rb_fork’
/Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/intern.h:608: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘rb_fork_err’
/Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/intern.h:610: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘rb_waitpid’
/Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/intern.h:611: error: expected ‘)’ before ‘pid’
/Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/intern.h:612: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘rb_spawn’
/Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/intern.h:613: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘rb_spawn_err’
/Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/intern.h:615: error: expected ‘)’ before ‘pid’
/Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/intern.h:728: error: expected declaration specifiers or ‘...’ before ‘uint32_t’
/Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/intern.h:851: error: expected ‘)’ before ‘long’
/Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/intern.h:852: error: expected ‘)’ before ‘long’
bcrypt_ext.c: In function ‘bc_salt’:
bcrypt_ext.c:21: warning: incompatible implicit declaration of built-in function ‘strlen’
make: *** [bcrypt_ext.o] Error 1

make failed, exit code 2

Gem files will remain installed in /Users//ticket_tracker/vendor/bundle/gems/bcrypt-3.1.9 for inspection.
Results logged to /Users//ticket_tracker/vendor/bundle/extensions/x86_64-darwin-12/2.0.0-static/bcrypt-3.1.9/gem_make.out
An error occurred while installing bcrypt (3.1.9), and Bundler cannot continue.
Make sure that `gem install bcrypt -v '3.1.9'` succeeds before bundling.

如果有人有更新 OSX、Rbenv、Ruby 等的经验并且可以给我一些建议,那将不胜感激。如果需要,我还可以发布更多代码/环境设置。

最佳答案

我遇到了同样的问题,我通过重新安装 XCode 命令行开发工具解决了这个问题:

xcode-select --install
bundle install

关于ruby-on-rails - Gem::Ext::BuildError:错误:无法构建 gem native 扩展 Bcrypt-Ruby,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26601184/

相关文章:

xcode - SceneKit:导入的 dae 文件未复制到应用程序包

ruby-on-rails - 如何仅在某个命名空间内跳过 application_controller 调用 (ActiveAdmin)

ruby-on-rails - 如何在 Shopify 公共(public)应用程序中添加 JavaScript

ruby-on-rails - Ruby on Rails - 为评论评级字段按小数点迭代数字

Ruby:如何生成具有 Excel 友好编码的 CSV 文件

c - Clang 的 "-z"选项是什么,为什么需要它?

javascript - 找不到没有 ID 的 FoodObject

ruby - 使用 Rack::Session::Pool 存储的 cookie 的 secret

ruby-on-rails - "one, other or both"案例的更好解决方案

macos - nginx 在本地主机上抛出 403,可能是由于 OS X High Sierra?