如何安装json gem - 无法构建gem native扩展(mac 10.10)

zwb*_*zwb 33 ruby macos xcode json ruby-on-rails

操作系统:Mac OS X 10.10.3 XCode:安装了命令行工具的最新版本(版本6.3)Rails:版本4.2.1 Ruby:版本2.2.1

我正在尝试为我正在处理的项目生成路由(定期执行此操作),当我收到错误消息时,建议我执行捆绑安装和捆绑执行.我做了,这一次,在编译JSON Gem(版本1.7.7)时,这个过程中断了.

在StackOverflow上做一些研究,建议更新Xcode的命令行工具,我做了,但这并没有解决问题.

我尝试单独安装JSON版本1.7.7,但它失败了,告诉我要查找错误日志:

/Users/zwb/.rvm/rubies/ruby-2.2.1/bin/ruby -r ./siteconf20150411-36070-1t083xl.rb extconf.rb
creating Makefile

make "DESTDIR=" clean

make "DESTDIR="
compiling generator.c
In file included from generator.c:1:
./../fbuffer/fbuffer.h:175:47: error: too few arguments provided to function-like macro invocation
    VALUE result = rb_str_new(FBUFFER_PAIR(fb));
                                              ^
/Users/zwb/.rvm/rubies/ruby-2.2.1/include/ruby-2.2.0/ruby/intern.h:793:9: note: macro 'rb_str_new' defined here
#define rb_str_new(str, len) __extension__ (    \
        ^
In file included from generator.c:1:
./../fbuffer/fbuffer.h:175:11: warning: incompatible pointer to integer conversion initializing 'VALUE' (aka 'unsigned long') with an expression of type 'VALUE (const char *, long)' [-Wint-conversion]
    VALUE result = rb_str_new(FBUFFER_PAIR(fb));
          ^        ~~~~~~~~~~
1 warning and 1 error generated.
make: *** [generator.o] Error 1

make failed, exit code 2
Run Code Online (Sandbox Code Playgroud)

RAJ*_*RAJ 64

但遗憾的是,JSON-1.7.7(以及1.8.1)与Ruby-2.2.x 不兼容.当您使用Ruby-2.2.1时,它将不适合您.

有两种选择:

  1. jsongem 更新为1.8.2版本.- 优先
  2. 编辑ruby-2.2.1/ext/json/fbuffer/fbuffer.h文件并用VALUE result = rb_str_new(FBUFFER_PTR(fb), FBUFFER_LEN(fb));.替换有问题的代码.看这里了解详细信息


Rob*_*ert 52

如果您使用的是Ruby 2.2.0或更高版本,则json gem将无法正确编译.您可以通过发布来解决此问题bundle update json