sh 'unset http_proxy' modifică shell-ul lansat pentru acel apel. Când se termină, procesul Ruby al Rake are în continuare mediul original, iar un apel sh ulterior îl moștenește din nou.

Pentru a modifica procesul Ruby pentru munca ulterioară:

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

Aceasta afectează copiii ulteriori și codul Ruby care citește aceste chei. Nu reconfigurează terminalul care a lansat Rake inițial.

Pentru o singură comandă copil, furnizați mediul acesteia direct:

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

Interfața de lansare a proceselor din Ruby tratează valorile nil ca eliminări din mediul acelui copil. Rake transmite lista de argumente către această interfață, lăsând propriul ENV neschimbat.

Eliminați cheile relevante pentru clientul real. O operațiune HTTPS poate consuma și https_proxy, iar unii clienți consultă ALL_PROXY sau un alt fișier de configurare. Eliminarea unei singure chei HTTP nu este o instrucțiune universală de rută directă.

Forma cu mai multe argumente păstrează argumentele executabilului separate. Nu este nevoie să construiți un șir shell care conține o comandă de eliminare și un URL.

Articole similare