sh 'unset http_proxy' endrer skallet som startes for det kallet. Når det avsluttes, har Rakes Ruby-prosess fortsatt sitt opprinnelige miljø, og et senere sh-kall arver det igjen.

For å endre Ruby-prosessen for videre arbeid:

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

Det påvirker senere barn og Ruby-kode som leser disse nøklene. Det omkonfigurerer ikke terminalen som opprinnelig startet Rake.

For én underordnet kommando gir du miljøet direkte:

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

Rubys grensesnitt for prosessstart behandler nil-verdier som fjerninger fra det underordnedes miljø. Rake sender argumentlisten til dette grensesnittet og lar sin egen ENV være uendret.

Fjern nøklene som er relevante for den faktiske klienten. En HTTPS-operasjon kan også bruke https_proxy, og noen klienter leser ALL_PROXY eller en annen konfigurasjonsfil. Å fjerne én HTTP-nøkkel alene er ikke en universell instruks om direkte rute.

Formen med flere argumenter holder kjørbare argumenter atskilt. Det er ikke nødvendig å bygge en shell-streng som inneholder en fjerningskommando og en URL.

Relaterte artikler