هيكل Rake لا يستطيع إلغاء إعداد proxy الخاص بـ Ruby
غيّر ENV في Ruby للمهام اللاحقة أو قدّم hash بيئة خاصة بعملية فرعية بدل إلغاء proxy داخل استدعاء sh معزول.
sh 'unset http_proxy' يغيّر الـ shell الذي يُشغَّل لذلك الاستدعاء. وعندما ينتهي، تظل عملية Ruby في Rake محتفظة ببيئتها الأصلية، ثم يرثها استدعاء sh لاحق من جديد.
لتغيير عملية Ruby للأعمال اللاحقة:
ENV.delete('http_proxy')
ENV.delete('HTTP_PROXY')
يؤثر ذلك في العمليات الفرعية اللاحقة وفي كود Ruby الذي يقرأ تلك المفاتيح. وهو لا يعيد ضبط الطرفية التي أطلقت Rake في البداية.
لأمر فرعي واحد، قدّم بيئته مباشرة:
sh(
{ 'http_proxy' => nil, 'HTTP_PROXY' => nil },
'ruby', 'download.rb'
)
تتعامل واجهة إطلاق العمليات في Ruby مع قيم nil على أنها إزالة من بيئة ذلك الفرع. يمرّر Rake قائمة الوسائط إلى تلك الواجهة، فيبقى ENV الخاص به دون تغيير.
أزل المفاتيح المتعلقة بالعميل الفعلي. قد تستهلك عملية HTTPS أيضًا https_proxy، وبعض العملاء يقرأون ALL_PROXY أو ملف إعدادات آخر. إزالة مفتاح HTTP واحد لا تُعد تعليمة عامة للتوجيه المباشر.
الصيغة متعددة الوسائط تُبقي وسائط التنفيذ منفصلة. لا حاجة لبناء سلسلة shell تحتوي أمر إلغاء وعنوان URL.