Подтвердить что ты не робот

Как установить json gem - Не удалось создать собственное расширение gem (mac 10.10)

ОС: Mac OS X 10.10.3 XCode: последний с установленными инструментами командной строки (версия 6.3) Rails: версия 4.2.1 Ruby: version 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
4b9b3361

Ответ 1

Однако, JSON-1.7.7 (и до 1.8.1) несовместим с Ruby-2.2.x. Поскольку вы используете Ruby-2.2.1, это не сработает для вас.

Для вас есть 2 варианта:

  • Обновите версию json до версии 1.8.2. - Предпочтительный
  • Измените ruby-2.2.1/ext/json/fbuffer/fbuffer.h файл и замените проблемный код на VALUE result = rb_str_new(FBUFFER_PTR(fb), FBUFFER_LEN(fb));. Посмотрите здесь для деталей

Ответ 2

Если вы используете Ruby 2.2.0 или выше, json gem не будет компилироваться должным образом. Вы можете исправить это, выпустив bundle update json

Ответ 3

gem install json -v '1.8.2' работал у меня.

Ответ 4

Я тоже столкнулся с этой проблемой, и ни одна из предложенных исправлений здесь не решила.

Я смог разрешить его только вручную, перезагружая и переустанавливая соответствующую версию инструментов командной строки Xcode:

https://developer.apple.com/download/more/?name=command%20line%20tools

Ответ 5

Это сработало для меня, так как я загрузил базовый Ruby случайно.

1.

Установите Ruby Development Kit здесь: http://rubyinstaller.org/downloads/ Нажмите самораспаковывающийся файл и извлеките его здесь:

C:\RubyDevKit

(или где-то еще, но у меня были проблемы с другими каталогами)

2.

Откройте cmd (терминал): cd C:\RubyDevKit ruby dk.rb init ruby dk.rb install

Источник: http://jekyll-windows.juthilo.com/1-ruby-and-devkit/