De acordo com este post
<arpa/inet.h>
não é uma biblioteca do Windows, então winsock2.h
deve ser usado em seu lugar. Para alterar essa referência, fiz o seguinte**:
- Vá para sua pasta de instalação (c:/Ruby193/lib/ruby/gems/1.9.1/gems/bson_ext-1.11.1)
- Aprofunde um nível na pasta cbson e encontre cbson.c
- Abra cbson.c em seu editor de texto favorito e encontre a linha que diz
#include "<arpa/inet.h>"
- Mude essa linha para
#include winsock2.h
- Abra um prompt de comando, navegue até a pasta de instalação e execute
gem build bson_ext.gemspec
- Mova o arquivo .gem recém-criado para um local seguro (%userprofile%\Desktop, por exemplo).
- Vá até a pasta gem e exclua toda a pasta bson_ext
- De volta à janela do prompt de comando, altere o diretório para onde você colocou o arquivo .gem recém-criado (cd %userprofile%\Desktop, se estiver seguindo essas etapas exatamente)
- Execute
gem install bson_ext-1.11.1.gem --local
e a gem agora deve ser instalada com sucesso.
** Grande ressalva:estou apenas executando um tutorial do mongodb for rails e não tenho nenhum código funcional para testar isso. Embora isso remova o erro de instalação, não tenho como determinar se essa correção é completa. Esta referência de biblioteca é nova para a versão 1.11.1. Se você instalar a versão 1.10.2, este problema não ocorrerá (
gem install bson_ext -v 1.10.2
). Vou deixar para você decidir qual solução faz mais sentido para você. Edit:Com base em uma alteração no projeto bson-ruby no github, uma correção melhor seria alterar esse include para ler assim:
#ifdef _WIN32
#include <winsock2.h>
#else
#include <arpa/inet.h>
#endif