MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

windows:rails:Fehler beim Installieren von bson_ext

Laut diesem Beitrag <arpa/inet.h> ist keine Windows-Bibliothek, also winsock2.h sollte stattdessen verwendet werden.

Um diese Referenz zu ändern, habe ich Folgendes getan**:

  • Gehen Sie zu Ihrem Installationsordner (c:/Ruby193/lib/ruby/gems/1.9.1/gems/bson_ext-1.11.1)
  • Gehen Sie eine Ebene tiefer in den cbson-Ordner und finden Sie cbson.c
  • Öffnen Sie cbson.c in Ihrem bevorzugten Texteditor und suchen Sie die Zeile mit der Aufschrift #include "<arpa/inet.h>"
  • Ändern Sie diese Zeile zu #include winsock2.h
  • Öffnen Sie eine Eingabeaufforderung, navigieren Sie zum Installationsordner und führen Sie gem build bson_ext.gemspec aus
  • Verschieben Sie die neu erstellte .gem-Datei an einen sicheren Ort (z. B. %userprofile%\Desktop).
  • Gehe zum Gem-Ordner und lösche den gesamten bson_ext-Ordner
  • Wechseln Sie in Ihrem Eingabeaufforderungsfenster das Verzeichnis dorthin, wo Sie die neu erstellte .gem-Datei abgelegt haben (cd %userprofile%\Desktop, wenn Sie genau diesen Schritten folgen)
  • Führen Sie gem install bson_ext-1.11.1.gem --local aus und das Gem sollte nun erfolgreich installiert werden.

** Riesige Einschränkung:Ich laufe gerade durch ein Mongodb für Rails-Tutorial und habe keinen funktionierenden Code, mit dem ich das testen könnte. Während dies den Installationsfehler beseitigt, kann ich nicht feststellen, ob dieser Fix vollständig ist. Diese Bibliotheksreferenz ist neu für die Version 1.11.1. Wenn Sie Version 1.10.2 installieren, tritt dieses Problem nicht auf (gem install bson_ext -v 1.10.2 ). Welche Lösung für Sie sinnvoller ist, überlasse ich Ihnen.

Bearbeiten:Basierend auf einer Änderung am bson-ruby-Projekt auf Github wäre es eine bessere Lösung, dieses Include so zu ändern, dass es so lautet:

#ifdef _WIN32
#include <winsock2.h>
#else
#include <arpa/inet.h>
#endif