Според тази публикация <arpa/inet.h>
не е библиотека на Windows, така че winsock2.h
трябва да се използва вместо това.
За да променя тази препратка, направих следното**:
- Отидете до вашата инсталационна папка (c:/Ruby193/lib/ruby/gems/1.9.1/gems/bson_ext-1.11.1)
- Пробийте надолу ниво в папката cbson и намерете cbson.c
- Отворете cbson.c в любимия си текстов редактор и намерете реда, който гласи
#include "<arpa/inet.h>"
- Променете този ред на
#include winsock2.h
- Отворете командния ред, прегледайте инсталационната папка и стартирайте
gem build bson_ext.gemspec
- Преместете новосъздадения .gem файл на безопасно място (например %userprofile%\Desktop).
- Отидете до папката gem и изтрийте цялата папка bson_ext
- Върнете се в прозореца на командния ред, променете директорията там, където сте поставили новосъздадения .gem файл (cd %userprofile%\Desktop, ако следвате точно тези стъпки)
- Изпълнете
gem install bson_ext-1.11.1.gem --local
и скъпоценният камък трябва да се инсталира успешно.
** Огромно предупреждение:Просто преминавам през урок за mongodb за rails и нямам никакъв работещ код, с който да тествам това. Въпреки че това премахва грешката при инсталиране, нямам начин да определя дали тази корекция е пълна. Тази справка за библиотеката е нова за версията 1.11.1. Ако инсталирате версия 1.10.2, този проблем няма да възникне (gem install bson_ext -v 1.10.2
). Оставям на вас да решите кое решение е по-разумно за вас.
Редактиране:Въз основа на промяна в проекта bson-ruby на github, по-добро решение би било да промените включването да се чете така:
#ifdef _WIN32
#include <winsock2.h>
#else
#include <arpa/inet.h>
#endif