เชลล์ของ Rake ยกเลิก proxy ของ Ruby ไม่ได้
เปลี่ยน ENV ของ Ruby สำหรับงานถัดไป หรือให้ hash สภาพแวดล้อมเฉพาะกับโปรเซสลูก แทนการยกเลิก proxy ภายในคำสั่ง sh ที่แยกออกมา
sh 'unset http_proxy' เปลี่ยนเชลล์ที่เริ่มสำหรับคำสั่งนั้น เมื่อมันจบลง โปรเซส 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 เพียงตัวเดียวไม่ใช่คำแนะนำเส้นทางตรงแบบสากล
รูปแบบหลายอาร์กิวเมนต์แยกอาร์กิวเมนต์ของไฟล์ที่เรียกใช้ไว้ด้วยกัน ไม่จำเป็นต้องสร้างสตริงเชลล์ที่มีคำสั่งลบและ URL