Un shell Rake nu poate elimina proxy-ul Ruby
Modificați ENV-ul Ruby pentru sarcinile ulterioare sau furnizați un hash de mediu specific copilului în loc să eliminați un proxy într-un apel sh izolat.
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.