sh 'unset http_proxy' modifie le shell lancé pour cet appel. Quand il se termine, le processus Ruby de Rake conserve son environnement d'origine, et un appel sh ultérieur l'hérite de nouveau.

Pour modifier le processus Ruby pour la suite du travail :

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

Cela affecte les enfants suivants et le code Ruby qui lit ces clés. Cela ne reconfigure pas le terminal qui a lancé Rake à l'origine.

Pour une seule commande enfant, fournissez son environnement directement :

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

L'interface de lancement de processus de Ruby traite les valeurs nil comme des suppressions dans l'environnement de cet enfant. Rake transmet la liste d'arguments à cette interface, en laissant son propre ENV inchangé.

Supprimez les clés pertinentes pour le client réel. Une opération HTTPS peut aussi consommer https_proxy, et certains clients consultent ALL_PROXY ou un autre fichier de configuration. Supprimer une seule clé HTTP n'est pas une instruction universelle de route directe.

La forme à plusieurs arguments garde les arguments de l'exécutable séparés. Il n'est pas nécessaire de construire une chaîne shell contenant une commande de suppression et une URL.

Articles similaires