MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Windows :rails :erreur lors de l'installation de bson_ext

D'après ce post <arpa/inet.h> n'est pas une bibliothèque Windows, donc winsock2.h devrait être utilisé à la place.

Pour changer cette référence, j'ai fait ce qui suit** :

  • Allez dans votre dossier d'installation (c:/Ruby193/lib/ruby/gems/1.9.1/gems/bson_ext-1.11.1)
  • Explorez un niveau dans le dossier cbson et trouvez cbson.c
  • Ouvrez cbson.c dans votre éditeur de texte préféré et trouvez la ligne qui lit #include "<arpa/inet.h>"
  • Changez cette ligne en #include winsock2.h
  • Ouvrez une invite de commande, accédez au dossier d'installation et exécutez gem build bson_ext.gemspec
  • Déplacez le fichier .gem nouvellement créé dans un endroit sûr (%userprofile%\Desktop, par exemple).
  • Allez jusqu'au dossier gem et supprimez tout le dossier bson_ext
  • De retour dans votre fenêtre d'invite de commande, changez de répertoire à l'endroit où vous avez placé le fichier .gem nouvellement créé (cd %userprofile%\Desktop, si vous suivez ces étapes à la lettre)
  • Exécutez gem install bson_ext-1.11.1.gem --local et la gemme devrait maintenant s'installer avec succès.

** Énorme mise en garde :je suis en train de parcourir un tutoriel mongodb for rails et je n'ai aucun code de fonctionnement avec lequel tester cela. Bien que cela supprime l'erreur d'installation, je n'ai aucun moyen de déterminer si ce correctif est complet. Cette référence de bibliothèque est nouvelle pour la version 1.11.1. Si vous installez la version 1.10.2, ce problème ne se produira pas (gem install bson_ext -v 1.10.2 ). Je vous laisse le soin de décider quelle solution vous convient le mieux.

Edit :sur la base d'une modification du projet bson-ruby sur github, une meilleure solution consisterait à modifier cette inclusion pour qu'elle se lise comme suit :

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