Secondo questo post <arpa/inet.h>
non è una libreria di Windows, quindi winsock2.h
dovrebbe essere usato invece.
Per modificare questo riferimento, ho fatto quanto segue**:
- Vai alla cartella di installazione (c:/Ruby193/lib/ruby/gems/1.9.1/gems/bson_ext-1.11.1)
- Scappa di un livello nella cartella cbson e trova cbson.c
- Apri cbson.c nel tuo editor di testo preferito e trova la riga che dice
#include "<arpa/inet.h>"
- Cambia quella riga in
#include winsock2.h
- Apri un prompt dei comandi, vai alla cartella di installazione ed esegui
gem build bson_ext.gemspec
- Sposta il file .gem appena creato in un posto sicuro (%userprofile%\Desktop, per esempio).
- Vai alla cartella gem ed elimina l'intera cartella bson_ext
- Nella finestra del prompt dei comandi, cambia directory nella posizione in cui hai posizionato il file .gem appena creato (cd %userprofile%\Desktop, se stai seguendo esattamente questi passaggi)
- Esegui
gem install bson_ext-1.11.1.gem --local
e la gemma ora dovrebbe essere installata correttamente.
** Avvertimento enorme:sto solo eseguendo un tutorial su mongodb for rails e non ho alcun codice funzionante con cui testarlo. Anche se questo rimuove l'errore di installazione, non ho modo di determinare se questa correzione è completa. Questo riferimento alla libreria è nuovo per la versione 1.11.1. Se installi la versione 1.10.2, questo problema non si verificherà (gem install bson_ext -v 1.10.2
). Lascio a te decidere quale soluzione ha più senso per te.
Modifica:sulla base di una modifica al progetto bson-ruby su github, una soluzione migliore sarebbe quella di modificare l'inclusione in una lettura in questo modo:
#ifdef _WIN32
#include <winsock2.h>
#else
#include <arpa/inet.h>
#endif