Una shell de Rake no pot desactivar el proxy de Ruby
Canvieu l'ENV de Ruby per a les tasques posteriors o proporcioneu un hash d'entorn específic per a un fill en lloc de desactivar un proxy dins d'una crida sh aïllada.
sh 'unset http_proxy' canvia la shell que s'engega per a aquella crida. Quan acaba, el procés Ruby de Rake encara té el seu entorn original i una crida sh posterior el torna a heretar.
Per canviar el procés Ruby per a la feina posterior:
ENV.delete('http_proxy')
ENV.delete('HTTP_PROXY')
Això afecta els fills posteriors i el codi Ruby que llegeix aquestes claus. No reconfigura el terminal que va engegar Rake originalment.
Per a una ordre filla, proporcioneu el seu entorn directament:
sh(
{ 'http_proxy' => nil, 'HTTP_PROXY' => nil },
'ruby', 'download.rb'
)
La interfície d'engegada de processos de Ruby tracta els valors nil com a eliminacions de l'entorn d'aquell fill. Rake passa la llista d'arguments a aquesta interfície i deixa el seu propi ENV sense canvis.
Elimineu les claus rellevants per al client real. Una operació HTTPS també pot consumir https_proxy, i alguns clients consulten ALL_PROXY o un altre fitxer de configuració. Eliminar només una clau HTTP no és una instrucció universal de ruta directa.
La forma amb diversos arguments manté separats els arguments de l'executable. No cal construir una cadena de shell que contingui una ordre per desactivar i una URL.