sh 'unset http_proxy' wijzigt de shell die voor die aanroep wordt gestart. Wanneer die eindigt, heeft het Ruby-proces van Rake nog steeds de oorspronkelijke omgeving, en een latere sh-aanroep erft die opnieuw.

Om het Ruby-proces voor het vervolgwerk te wijzigen:

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

Dat beïnvloedt latere kinderen en Ruby-code die die sleutels leest. Het herconfigureert de terminal die Rake oorspronkelijk startte niet.

Voor één kindopdracht geeft u de omgeving ervan direct mee:

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

Ruby's interface voor processtart behandelt nil-waarden als verwijderingen uit de omgeving van dat kind. Rake geeft de argumentlijst aan die interface en laat zijn eigen ENV ongewijzigd.

Verwijder de sleutels die voor de daadwerkelijke client relevant zijn. Een HTTPS-bewerking kan ook https_proxy gebruiken, en sommige clients raadplegen ALL_PROXY of een ander configuratiebestand. Alleen één HTTP-sleutel verwijderen is geen universele instructie voor een directe route.

De vorm met meerdere argumenten houdt de argumenten van het uitvoerbare bestand gescheiden. Het is niet nodig een shell-string te bouwen met een verwijderopdracht en een URL.

Gerelateerde artikelen