この投稿によると、<arpa/inet.h>
はWindowsライブラリではないため、winsock2.h
代わりに使用する必要があります。
この参照を変更するために、次のことを行いました**:
- インストールフォルダー(c:/Ruby193/lib/ruby/gems/1.9.1/gems/bson_ext-1.11.1)に移動します
- レベルをcbsonフォルダーにドリルダウンし、cbson.cを見つけます
- お気に入りのテキストエディタでcbson.cを開き、
#include "<arpa/inet.h>"
という行を見つけます。 - その行を
#include winsock2.h
に変更します - コマンドプロンプトを開き、インストールフォルダーを参照して、
gem build bson_ext.gemspec
を実行します。 - 新しく作成した.gemファイルを安全な場所(%userprofile%\ Desktopなど)に移動します。
- gemフォルダーに移動し、bson_extフォルダー全体を削除します
- コマンドプロンプトウィンドウに戻り、新しく作成した.gemファイルを配置した場所にディレクトリを変更します(これらの手順を正確に実行している場合は、cd%userprofile%\ Desktop)
-
gem install bson_ext-1.11.1.gem --local
を実行します これで、gemが正常にインストールされます。
**大きな警告:私はRailsチュートリアルのmongodbを実行しているだけで、これをテストするための機能するコードがありません。これによりインストールエラーは削除されますが、この修正が完全なものであるかどうかを判断する方法はありません。このライブラリリファレンスは、1.11.1リリースの新機能です。バージョン1.10.2をインストールした場合、この問題は発生しません(gem install bson_ext -v 1.10.2
)。どのソリューションがあなたにとってより理にかなっているのかを決めるのはあなたに任せます。
編集:githubのbson-rubyプロジェクトへの変更に基づいて、次のように読むことを含む変更を行うことをお勧めします:
#ifdef _WIN32
#include <winsock2.h>
#else
#include <arpa/inet.h>
#endif