Una shell di Rake non può disattivare il proxy di Ruby
Modificate l'ENV di Ruby per le attività successive o fornite un hash d'ambiente specifico per il figlio invece di disattivare un proxy dentro una chiamata sh isolata.
sh 'unset http_proxy' modifica la shell avviata per quella chiamata. Quando termina, il processo Ruby di Rake ha ancora il suo ambiente originale, e una chiamata sh successiva lo eredita di nuovo.
Per modificare il processo Ruby per il lavoro successivo:
ENV.delete('http_proxy')
ENV.delete('HTTP_PROXY')
Ciò influisce sui figli successivi e sul codice Ruby che legge queste chiavi. Non riconfigura il terminale che ha avviato Rake originariamente.
Per un singolo comando figlio, fornite il suo ambiente direttamente:
sh(
{ 'http_proxy' => nil, 'HTTP_PROXY' => nil },
'ruby', 'download.rb'
)
L'interfaccia di avvio dei processi di Ruby tratta i valori nil come rimozioni dall'ambiente di quel figlio. Rake passa l'elenco degli argomenti a quell'interfaccia, lasciando invariato il proprio ENV.
Rimuovete le chiavi rilevanti per il client effettivo. Un'operazione HTTPS può usare anche https_proxy, e alcuni client consultano ALL_PROXY o un altro file di configurazione. Rimuovere una sola chiave HTTP non è un'istruzione universale di rotta diretta.
La forma con più argomenti mantiene separati gli argomenti dell'eseguibile. Non serve costruire una stringa di shell contenente un comando di rimozione e un URL.