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.

Súvisiace články