sh 'unset http_proxy' mění shell spuštěný pro toto volání. Když skončí, proces Ruby v Rake má stále své původní prostředí a pozdější volání sh ho znovu zdědí.

Chcete-li změnit proces Ruby pro další práci:

ENV.delete('http_proxy')
ENV.delete('HTTP_PROXY')

Ovlivní to pozdější potomky a kód Ruby, který tyto klíče čte. Nepřekonfiguruje to terminál, který Rake původně spustil.

Pro jeden potomkový příkaz předejte jeho prostředí přímo:

sh(
  { 'http_proxy' => nil, 'HTTP_PROXY' => nil },
  'ruby', 'download.rb'
)

Rozhraní Ruby pro spouštění procesů považuje hodnoty nil za odstranění z prostředí daného potomka. Rake předá seznam argumentů tomuto rozhraní a jeho vlastní ENV zůstane nezměněn.

Odstraňte klíče relevantní pro skutečného klienta. Operace HTTPS může využít i https_proxy a některé klienty čtou ALL_PROXY nebo jiný konfigurační soubor. Odstranění jediného klíče HTTP není univerzální pokyn k přímé trase.

Forma s více argumenty udržuje argumenty spustitelného souboru oddělené. Není třeba sestavovat shellový řetězec obsahující příkaz pro zrušení a URL.

Související články