sh 'unset http_proxy' cambia a shell que se lanza para esa chamada. Cando remata, o proceso Ruby de Rake segue tendo o seu contorno orixinal, e unha chamada sh posterior volve herdalo.

Para cambiar o proceso Ruby para o traballo posterior:

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

Isto afecta os fillos posteriores e o código Ruby que le esas claves. Non reconfigura o terminal que lanzou Rake orixinalmente.

Para unha única orde filla, forneza o seu contorno directamente:

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

A interface de lanzamento de procesos de Ruby trata os valores nil como eliminacións do contorno dese fillo. Rake pasa a lista de argumentos a esa interface, deixando o seu propio ENV sen cambios.

Elimine as claves relevantes para o cliente real. Unha operación HTTPS tamén pode consumir https_proxy, e algúns clientes consultan ALL_PROXY ou outro ficheiro de configuración. Eliminar só unha clave HTTP non é unha instrución universal de ruta directa.

A forma con varios argumentos mantén separados os argumentos do executábel. Non cómpre construír unha cadea de shell que conteña unha orde de desactivación e un URL.

Artigos relacionados