भाग मेरी स्थिति से आता है - gemspec में इस लाइन के साथ - एक रत्न इनहेरिट बनाए रखने के लिए:
gem.add_dependency 'savon'
कोई version number specified है, तो नवीनतम रन Savon 2 का उपयोग करने पर , जिसने Savon.configure
वैश्विक व्यवहार को हटा दिया। तुम मुझे के रूप में ही नाव में हैं, Savon के अंतिम पूर्व 2.0 संस्करण के लिए इस लाइन को बदलने के मुद्दे को हल करेंगे:
gem.add_dependency 'savon', '~>1.2.0'
फिर bundle install
और आप अच्छा होना चाहिए।
या आप अपना कोड अपग्रेड करना चाहते हैं। मुझे पता है कि मैं करता हूँ।
Savon.configure
Savon 2.0 से हटा दिया गया था क्योंकि "problem was global state"। आपके ऐप में व्यवहार को रखने का सबसे तेज़ तरीका एक ही स्थान पर एक ऐप-स्तरीय वैश्विक हैश को परिभाषित करना होगा। फिर आप इस हैश को हर Savon.client
कॉल में भेज देंगे। उदाहरण के लिए:
# Where Savon.configure was called
APP_OPTS = {
# disable request logging, silences HTTPI as well
log: false,
# Don't log Laundry xmls to STDOUT
log_level: :error,
#... etc
}
# Elsewhere
@client = Savon::Client.new(APP_OPTS)
मैं इसे 2.0 कॉन्फ़िगरेशन शैली में माइग्रेट करने के लिए एक प्रारंभिक बिंदु मानता हूं। आदर्श रूप से, आपको प्रत्येक Savon क्लाइंट को प्रारंभ करते समय हमेशा client-specific 2.0 options available पर विचार करना चाहिए।
स्रोत
2012-12-19 05:45:12
कृपया हर कोई हमेशा अपने मणि निर्भरताओं को कम से कम एक प्रमुख संस्करण तक पिन करें। इस वास्तव में उपयोगी उत्तर लिखने के लिए धन्यवाद। – rubiii
मैं पूछना चाहता था, जहां आप APP_OPTS लिखते हैं, कॉन्फ़िगरेशन/प्रारंभकर्ताओं में फ़ाइल में जहां कॉन्फ़िगर कोड था? मैं savon 1.0 का उपयोग कर रहा था और savon.config के साथ विधि नहीं मिल रहा था, लेकिन मेरे पास एक और प्रोजेक्ट है जिसका उपयोग उसी तरह से किया जाता है और काम करता है, क्या यह संभव है कि निर्भरताओं में से एक अपवाद फेंकता है? आपकी मदद के लिए धन्यवाद –
मेरे उदाहरण में, APP_OPTS केवल एक एप्लिकेशन स्थिर है। महत्वपूर्ण पंक्ति '@client = Savon :: Client.new (APP_OPTS)' है, जिसे आपको Savon (2.0) क्लाइंट ऑब्जेक्ट के उदाहरण की आवश्यकता होने पर प्रारंभ किया जाना चाहिए। आपकी त्रुटि के लिए, मैं आपके Gemfile.lock को दोबारा जांचूंगा। आप जो वर्णन करते हैं वह वास्तव में एक सावन 1 -> 2 त्रुटि जैसा लगता है जिसमें मैंने भाग लिया था –