Un shell de Rake no puede desactivar el proxy de Ruby
Cambie el ENV de Ruby para las tareas posteriores o proporcione un hash de entorno específico para el hijo en lugar de desactivar un proxy dentro de una llamada sh aislada.
sh 'unset http_proxy' cambia el shell que se lanza para esa llamada. Cuando termina, el proceso Ruby de Rake sigue teniendo su entorno original, y una llamada sh posterior lo hereda de nuevo.
Para cambiar el proceso Ruby para el trabajo posterior:
ENV.delete('http_proxy')
ENV.delete('HTTP_PROXY')
Eso afecta a los hijos posteriores y al código Ruby que lee esas claves. No reconfigura la terminal que lanzó Rake originalmente.
Para un solo comando hijo, proporcione su entorno directamente:
sh(
{ 'http_proxy' => nil, 'HTTP_PROXY' => nil },
'ruby', 'download.rb'
)
La interfaz de lanzamiento de procesos de Ruby trata los valores nil como eliminaciones del entorno de ese hijo. Rake pasa la lista de argumentos a esa interfaz y deja su propio ENV sin cambios.
Elimine las claves relevantes para el cliente real. Una operación HTTPS también puede consumir https_proxy, y algunos clientes consultan ALL_PROXY u otro archivo de configuración. Eliminar solo una clave HTTP no es una instrucción universal de ruta directa.
La forma con varios argumentos mantiene separados los argumentos del ejecutable. No hace falta construir una cadena de shell que contenga un comando de desactivación y una URL.