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