Rake शेल Ruby का प्रॉक्सी अनसेट नहीं कर सकता
बाद के कार्यों के लिए Ruby का ENV बदलें या अलग sh कॉल के अंदर प्रॉक्सी अनसेट करने के बजाय चाइल्ड के लिए अलग environment hash दें।
sh 'unset http_proxy' उस कॉल के लिए शुरू किया गया शेल बदल देता है। जब वह बंद होता है, Rake की Ruby प्रक्रिया के पास अब भी उसका मूल environment रहता है, और बाद की sh कॉल फिर से उसे विरासत में लेती है।
बाद के काम के लिए Ruby प्रक्रिया बदलने हेतु:
ENV.delete('http_proxy')
ENV.delete('HTTP_PROXY')
यह बाद की चाइल्ड प्रक्रियाओं और उन keys को पढ़ने वाले Ruby कोड पर असर डालता है। यह उस टर्मिनल को फिर से कॉन्फ़िगर नहीं करता जिसने मूल रूप से Rake शुरू किया था।
एक चाइल्ड कमांड के लिए, उसका environment सीधे दें:
sh(
{ 'http_proxy' => nil, 'HTTP_PROXY' => nil },
'ruby', 'download.rb'
)
Ruby का प्रोसेस-लॉन्च इंटरफ़ेस nil मानों को उस चाइल्ड के environment से हटाने के रूप में मानता है। Rake argument सूची उस इंटरफ़ेस को देता है, जिससे उसका अपना ENV अपरिवर्तित रहता है।
वास्तविक client के लिए प्रासंगिक keys हटाएँ। HTTPS कार्य https_proxy भी ले सकता है, और कुछ client ALL_PROXY या कोई दूसरी configuration फ़ाइल देखते हैं। केवल एक HTTP key हटाना सार्वभौमिक direct-route निर्देश नहीं है।
बहु-argument रूप निष्पादन योग्य arguments को अलग रखता है। unset कमांड और URL वाली shell स्ट्रिंग बनाने की ज़रूरत नहीं है।