操作系统:Mac OS X 10.10.3 XCode:安装了命令行工具的最新版本(版本6.3)Rails:版本4.2.1 Ruby:版本2.2.1
我正在尝试为我正在处理的项目生成路由(定期执行此操作),当我收到错误消息时,建议我执行捆绑安装和捆绑exec。我做了,这一次,在编译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
答案 0 :(得分:63)
很遗憾,JSON-1.7.7(以及1.8.1)与Ruby-2.2.x是incompatible。当您使用Ruby-2.2.1时,它将不适合您。
您有两种选择:
json
gem更新为1.8.2
版本。 - 优先 ruby-2.2.1/ext/json/fbuffer/fbuffer.h
文件,并将问题代码替换为VALUE result = rb_str_new(FBUFFER_PTR(fb), FBUFFER_LEN(fb));
。查看here了解详情答案 1 :(得分:52)
如果您使用的是Ruby 2.2.0或更高版本,则json gem将无法正确编译。您可以通过发出bundle update json
答案 2 :(得分:0)
gem install json -v'1.8.2'为我工作。
答案 3 :(得分:0)
我也遇到了这个问题,这里没有任何建议的解决方法解决了它。
我只能通过手动重新下载并重新安装适当版本的Xcode命令行工具来解决它:
https://developer.apple.com/download/more/?name=command%20line%20tools
答案 4 :(得分:-1)
这对我有用,因为我偶然下载了基本的Ruby。
安装Ruby"开发套件"在这里:http://rubyinstaller.org/downloads/ 单击自解压缩文件,然后在此处解压缩:
(或其他地方,但我在其他目录中遇到问题)
打开cmd(终端):
cd C:\RubyDevKit
ruby dk.rb init
ruby dk.rb install