इस पोस्ट के अनुसार <arpa/inet.h>
विंडोज़ लाइब्रेरी नहीं है, इसलिए 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)।
- मणि फ़ोल्डर में जाएं और संपूर्ण bson_ext फ़ोल्डर हटाएं
- अपनी कमांड प्रॉम्प्ट विंडो में वापस, निर्देशिका को उस स्थान पर बदलें जहां आपने नई बनाई गई .gem फ़ाइल रखी है (cd %userprofile%\Desktop, यदि आप इन चरणों का ठीक से पालन कर रहे हैं)
- चलाएं
gem install bson_ext-1.11.1.gem --local
और मणि अब सफलतापूर्वक स्थापित होनी चाहिए।
** विशाल चेतावनी:मैं रेल ट्यूटोरियल के लिए सिर्फ एक मोंगोडब के माध्यम से चल रहा हूं और मेरे पास इसका परीक्षण करने के लिए कोई कामकाजी कोड नहीं है। हालांकि यह स्थापना त्रुटि को हटा देता है, मेरे पास यह निर्धारित करने का कोई तरीका नहीं है कि यह फिक्स पूर्ण है या नहीं। यह पुस्तकालय संदर्भ 1.11.1 रिलीज के लिए नया है। यदि आप संस्करण 1.10.2 स्थापित करते हैं तो यह समस्या नहीं होगी (gem install bson_ext -v 1.10.2
) मैं यह तय करने के लिए आपको छोड़ दूँगा कि कौन सा समाधान आपके लिए अधिक समझ में आता है।
संपादित करें:जीथब पर बीएसओएन-रूबी प्रोजेक्ट में बदलाव के आधार पर, इसे बदलने के लिए एक बेहतर फिक्स होगा जिसमें इस तरह पढ़ना शामिल है:
#ifdef _WIN32
#include <winsock2.h>
#else
#include <arpa/inet.h>
#endif