Обвивката на Rake не може да премахне проксито на Ruby
Променете ENV на Ruby за следващи задачи или подайте отделен хеш на средата за дъщерен процес, вместо да премахвате прокси в изолирано извикване на 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 ключ не е универсална инструкция за директен маршрут.
Формата с няколко аргумента запазва аргументите на изпълнимия файл отделно. Няма нужда да се строи shell низ с команда за премахване и URL.