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 اسٹرنگ بنانے کی ضرورت نہیں ہے۔