Um shell do Rake não consegue desfazer o proxy do Ruby
Altere o ENV do Ruby para tarefas posteriores ou forneça um hash de ambiente específico do filho em vez de desfazer um proxy dentro de uma chamada sh isolada.
sh 'unset http_proxy' altera o shell iniciado para essa chamada. Quando ele termina, o processo Ruby do Rake continua com o ambiente original, e uma chamada sh posterior o herda novamente.
Para alterar o processo Ruby para o trabalho seguinte:
ENV.delete('http_proxy')
ENV.delete('HTTP_PROXY')
Isso afeta os filhos posteriores e o código Ruby que lê essas chaves. Não reconfigura o terminal que iniciou o Rake originalmente.
Para um único comando filho, forneça o ambiente dele diretamente:
sh(
{ 'http_proxy' => nil, 'HTTP_PROXY' => nil },
'ruby', 'download.rb'
)
A interface de inicialização de processos do Ruby trata valores nil como remoções do ambiente desse filho. O Rake passa a lista de argumentos para essa interface, deixando seu próprio ENV inalterado.
Remova as chaves relevantes para o cliente real. Uma operação HTTPS também pode consumir https_proxy, e alguns clientes consultam ALL_PROXY ou outro arquivo de configuração. Remover apenas uma chave HTTP não é uma instrução universal de rota direta.
A forma com vários argumentos mantém os argumentos do executável separados. Não é preciso construir uma string de shell contendo um comando de remoção e um URL.