Rake ljuska ne može ukloniti Ruby proxy
Promijenite Ruby ENV za kasnije zadatke ili dajte hash okruženja specifičan za dijete umjesto uklanjanja proxyja unutar izolovanog sh poziva.
sh 'unset http_proxy' mijenja ljusku pokrenutu za taj poziv. Kada se završi, Ruby proces u Rakeu i dalje ima svoje izvorno okruženje, a kasniji sh poziv ga ponovo nasljeđuje.
Da promijenite Ruby proces za kasniji rad:
ENV.delete('http_proxy')
ENV.delete('HTTP_PROXY')
To utiče na kasniju djecu i Ruby kod koji čita te ključeve. On ne rekonfiguriše terminal koji je prvobitno pokrenuo Rake.
Za jednu dječju komandu, dajte njeno okruženje direktno:
sh(
{ 'http_proxy' => nil, 'HTTP_PROXY' => nil },
'ruby', 'download.rb'
)
Ruby interfejs za pokretanje procesa tretira nil vrijednosti kao uklanjanje iz okruženja tog djeteta. Rake prosljeđuje listu argumenata tom interfejsu, ostavljajući vlastiti ENV nepromijenjenim.
Uklonite ključeve relevantne za stvarnog klijenta. HTTPS operacija može koristiti i https_proxy, a neki klijenti čitaju ALL_PROXY ili drugu konfiguracijsku datoteku. Uklanjanje samo jednog HTTP ključa nije univerzalna instrukcija za direktnu rutu.
Forma s više argumenata drži argumente izvršnog fajla odvojenim. Nema potrebe graditi shell string koji sadrži naredbu za uklanjanje i URL.