MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

windows:rails:błąd instalacji bson_ext

Zgodnie z tym postem <arpa/inet.h> nie jest biblioteką Windows, więc winsock2.h powinien być używany zamiast.

Aby zmienić to odniesienie, wykonałem następujące czynności**:

  • Przejdź do folderu instalacyjnego (c:/Ruby193/lib/ruby/gems/1.9.1/gems/bson_ext-1.11.1)
  • Przejdź poziom do folderu cbson i znajdź cbson.c
  • Otwórz cbson.c w swoim ulubionym edytorze tekstu i znajdź wiersz, który brzmi #include "<arpa/inet.h>"
  • Zmień tę linię na #include winsock2.h
  • Otwórz wiersz poleceń, przejdź do folderu instalacyjnego i uruchom gem build bson_ext.gemspec
  • Przenieś nowo utworzony plik .gem w bezpieczne miejsce (na przykład %userprofile%\Desktop).
  • Idź do folderu gem i usuń cały folder bson_ext
  • Wracając do okna wiersza poleceń, zmień katalog na miejsce, w którym umieściłeś nowo utworzony plik .gem (cd %userprofile%\Desktop, jeśli dokładnie wykonujesz te czynności)
  • Uruchom gem install bson_ext-1.11.1.gem --local a gem powinien się teraz pomyślnie zainstalować.

** Ogromne zastrzeżenie:Właśnie przechodzę przez samouczek mongodb for rails i nie mam żadnego działającego kodu, z którym mógłbym to przetestować. Chociaż usuwa to błąd instalacji, nie mam możliwości określenia, czy ta poprawka jest kompletna. To odniesienie do biblioteki jest nowością w wersji 1.11.1. Jeśli zainstalujesz wersję 1.10.2, ten problem nie wystąpi (gem install bson_ext -v 1.10.2 ). Decyzję, które rozwiązanie będzie dla Ciebie bardziej sensowne, pozostawiam Tobie.

Edycja:W oparciu o zmianę w projekcie bson-ruby na github, lepszą poprawką byłaby zmiana obejmująca czytanie w ten sposób:

#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. Jak zainstalować MongoDB

  2. Co to jest błąd Mongoose Cast to ObjectId nie powiodło się dla wartości XXX w ścieżce _id?

  3. 'process.nextTick(function() { throw err; })' — Undefined nie jest funkcją (mongodb/mongoose)

  4. MongoDB return True, jeśli dokument istnieje

  5. MongoDB cursor.count()