sh 'unset http_proxy' zmienia powłokę uruchamianą dla tego wywołania. Gdy się kończy, proces Ruby w Rake nadal ma swoje pierwotne środowisko, a późniejsze wywołanie sh znów je dziedziczy.

Aby zmienić proces Ruby na potrzeby dalszej pracy:

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

Wpływa to na późniejsze procesy potomne i kod Ruby, który czyta te klucze. To nie rekonfiguruje terminala, który pierwotnie uruchomił Rake.

Dla jednego polecenia potomnego podaj jego środowisko bezpośrednio:

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

Interfejs uruchamiania procesów Ruby'ego traktuje wartości nil jako usunięcia ze środowiska tego procesu potomnego. Rake przekazuje listę argumentów temu interfejsowi, pozostawiając własne ENV bez zmian.

Usuń klucze istotne dla rzeczywistego klienta. Operacja HTTPS może również korzystać z https_proxy, a niektóre klienty czytają ALL_PROXY lub inny plik konfiguracyjny. Usunięcie samego jednego klucza HTTP nie jest uniwersalną instrukcją trasy bezpośredniej.

Forma z wieloma argumentami utrzymuje argumenty pliku wykonywalnego osobno. Nie trzeba budować łańcucha powłoki zawierającego polecenie usunięcia i URL.

Powiązane artykuły