En Rake-shell kan ikke fjerne Rubys proxy
Skift Rubys ENV for senere opgaver, eller giv et underordnet miljø-hash i stedet for at fjerne en proxy inde i et isoleret sh-kald.
sh 'unset http_proxy' ændrer den shell, der startes for det kald. Når den afsluttes, har Rakes Ruby-proces stadig sit oprindelige miljø, og et senere sh-kald arver det igen.
Sådan ændrer du Ruby-processen til efterfølgende arbejde:
ENV.delete('http_proxy')
ENV.delete('HTTP_PROXY')
Det påvirker senere børn og Ruby-kode, der læser de nøgler. Det omkonfigurerer ikke den terminal, der oprindeligt startede Rake.
Til én underordnet kommando gives dens miljø direkte:
sh(
{ 'http_proxy' => nil, 'HTTP_PROXY' => nil },
'ruby', 'download.rb'
)
Rubys interface til processtart behandler nil-værdier som fjernelser fra det underordnedes miljø. Rake sender argumentlisten til det interface og lader sin egen ENV være uændret.
Fjern de nøgler, der er relevante for den faktiske klient. En HTTPS-handling kan også bruge https_proxy, og nogle klienter læser ALL_PROXY eller en anden konfigurationsfil. At fjerne én HTTP-nøgle alene er ikke en universel instruks om direkte rute.
Formen med flere argumenter holder kørbare argumenter adskilt. Der er ingen grund til at bygge en shell-streg, der indeholder en fjernelseskommando og en URL.