sh 'unset http_proxy' ändert die für diesen Aufruf gestartete Shell. Wenn sie endet, hat Rubys Prozess in Rake weiterhin seine ursprüngliche Umgebung, und ein späterer sh-Aufruf erbt sie erneut.

Um den Ruby-Prozess für die weitere Arbeit zu ändern:

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

Das betrifft spätere Kindprozesse und Ruby-Code, der diese Schlüssel liest. Es konfiguriert das Terminal, das Rake ursprünglich gestartet hat, nicht neu.

Für einen einzelnen Kindbefehl geben Sie dessen Umgebung direkt an:

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

Rubys Schnittstelle zum Starten von Prozessen behandelt nil-Werte als Entfernung aus der Umgebung dieses Kindes. Rake übergibt die Argumentliste an diese Schnittstelle und lässt sein eigenes ENV unverändert.

Entfernen Sie die Schlüssel, die für den tatsächlichen Client relevant sind. Ein HTTPS-Vorgang kann auch https_proxy nutzen, und manche Clients lesen ALL_PROXY oder eine andere Konfigurationsdatei. Das Entfernen eines einzelnen HTTP-Schlüssels ist keine allgemeine Anweisung für eine direkte Route.

Die Form mit mehreren Argumenten hält die Argumente der ausführbaren Datei getrennt. Es ist nicht nötig, eine Shell-Zeichenkette mit einem Entfernungsbefehl und einer URL zu bauen.

Ähnliche Artikel