Оболонка 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 не є універсальною інструкцією прямого маршруту.
Форма з кількома аргументами зберігає аргументи виконуваного файлу окремо. Немає потреби будувати рядок оболонки з командою зняття та URL.