Theo bài đăng này <arpa/inet.h>
không phải là thư viện windows, vì vậy winsock2.h
nên được sử dụng thay thế.
Để thay đổi tham chiếu này, tôi đã thực hiện như sau **:
- Đi tới thư mục cài đặt của bạn (c:/Ruby193/lib/ruby/gems/1.9.1/gems/bson_ext-1.11.1)
- Đi sâu vào một cấp độ trong thư mục cbson và tìm cbson.c
- Mở cbson.c trong trình soạn thảo văn bản yêu thích của bạn và tìm dòng có nội dung
#include "<arpa/inet.h>"
- Thay đổi dòng đó thành
#include winsock2.h
- Mở dấu nhắc lệnh, duyệt đến thư mục cài đặt và chạy
gem build bson_ext.gemspec
- Di chuyển tệp .gem mới tạo đến nơi an toàn (ví dụ:% userprofile% \ Desktop).
- Đi tới thư mục gem và xóa toàn bộ thư mục bson_ext
- Quay lại cửa sổ nhắc lệnh của bạn, thay đổi thư mục thành bất kỳ nơi nào bạn đặt tệp .gem mới tạo (cd% userprofile% \ Desktop, nếu bạn đang làm theo các bước này chính xác)
- Chạy
gem install bson_ext-1.11.1.gem --local
và gem bây giờ sẽ cài đặt thành công.
** Lưu ý rất lớn:Tôi chỉ đang chạy qua một hướng dẫn mongodb cho đường ray và tôi không có bất kỳ mã hoạt động nào để kiểm tra điều này. Trong khi điều này loại bỏ lỗi cài đặt, tôi không có cách nào để xác định xem bản sửa lỗi này đã hoàn thành hay chưa. Tham chiếu thư viện này là mới cho bản phát hành 1.11.1. Nếu bạn cài đặt phiên bản 1.10.2, sự cố này sẽ không xảy ra (gem install bson_ext -v 1.10.2
). Tôi sẽ để bạn quyết định giải pháp nào phù hợp hơn với bạn.
Chỉnh sửa:Dựa trên sự thay đổi đối với dự án bson-ruby trên github, một bản sửa lỗi tốt hơn sẽ là thay đổi bao gồm để đọc như sau:
#ifdef _WIN32
#include <winsock2.h>
#else
#include <arpa/inet.h>
#endif