MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

windows:rails:грешка при инсталиране на bson_ext

Според тази публикация <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


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Редовен израз за MongoDB ObjectID

  2. Разработване на база данни на Python и MongoDB

  3. Актуализирайте вложените поддокументи в MongoDB с arrayFilters

  4. MongoDB $ifNull

  5. Meteor - collection.find() винаги връща всички полета