Shell v Rake nezruší proxy Ruby
Zmeňte ENV Ruby pre ďalšie úlohy alebo odovzdajte potomkovi vlastný hash prostredia, namiesto zrušenia proxy v izolovanom volaní sh.
sh 'unset http_proxy' mení shell spustený pre toto volanie. Keď skončí, proces Ruby v Rake má stále svoje pôvodné prostredie a neskoršie volanie sh ho znova zdedí.
Ak chcete zmeniť proces Ruby pre ďalšiu prácu:
ENV.delete('http_proxy')
ENV.delete('HTTP_PROXY')
Ovplyvní to neskorších potomkov a kód Ruby, ktorý tieto kľúče číta. Nenakonfiguruje to znova terminál, ktorý Rake pôvodne spustil.
Pre jeden potomkový príkaz odovzdajte jeho prostredie priamo:
sh(
{ 'http_proxy' => nil, 'HTTP_PROXY' => nil },
'ruby', 'download.rb'
)
Rozhranie Ruby na spúšťanie procesov považuje hodnoty nil za odstránenia z prostredia daného potomka. Rake odovzdá zoznam argumentov tomuto rozhraniu a jeho vlastné ENV zostane nezmenené.
Odstráňte kľúče relevantné pre skutočného klienta. Operácia HTTPS môže využiť aj https_proxy a niektoré klienty čítajú ALL_PROXY alebo iný konfiguračný súbor. Odstránenie jediného kľúča HTTP nie je univerzálny pokyn na priamu trasu.
Forma s viacerými argumentmi udržuje argumenty spustiteľného súboru oddelené. Nie je potrebné zostavovať shellový reťazec obsahujúci príkaz na zrušenie a URL.