Menurut postingan ini <arpa/inet.h>
bukan perpustakaan windows, jadi winsock2.h
harus digunakan sebagai gantinya.
Untuk mengubah referensi ini, saya telah melakukan hal berikut**:
- Buka folder instalasi Anda (c:/Ruby193/lib/ruby/gems/1.9.1/gems/bson_ext-1.11.1)
- Telusuri level ke dalam folder cbson dan temukan cbson.c
- Buka cbson.c di editor teks favorit Anda dan temukan baris yang bertuliskan
#include "<arpa/inet.h>"
- Ubah baris tersebut menjadi
#include winsock2.h
- Buka prompt perintah, ramban ke folder instalasi, dan jalankan
gem build bson_ext.gemspec
- Pindahkan file .gem yang baru dibuat ke tempat yang aman (misalnya %userprofile%\Desktop).
- Buka folder permata dan hapus seluruh folder bson_ext
- Kembali ke jendela prompt perintah Anda, ubah direktori ke mana pun Anda menempatkan file .gem yang baru dibuat (cd %userprofile%\Desktop, jika Anda mengikuti langkah-langkah ini dengan tepat)
- Jalankan
gem install bson_ext-1.11.1.gem --local
dan permata sekarang harus berhasil diinstal.
** Peringatan besar:Saya baru saja menjalankan mongodb untuk tutorial Rails dan saya tidak memiliki kode yang berfungsi untuk menguji ini. Meskipun ini menghilangkan kesalahan instalasi, saya tidak memiliki cara untuk menentukan apakah perbaikan ini selesai. Referensi pustaka ini baru untuk rilis 1.11.1. Jika Anda menginstal versi 1.10.2 masalah ini tidak akan terjadi (gem install bson_ext -v 1.10.2
). Saya akan menyerahkannya kepada Anda untuk memutuskan solusi mana yang lebih masuk akal bagi Anda.
Sunting:Berdasarkan perubahan pada proyek bson-Ruby di github, perbaikan yang lebih baik adalah mengubah yang menyertakan menjadi seperti ini:
#ifdef _WIN32
#include <winsock2.h>
#else
#include <arpa/inet.h>
#endif