sh 'unset http_proxy' змяняе абалонку, якая запускаецца для гэтага выкліку. Калі яна завяршаецца, працэс Ruby у Rake па-ранейшаму мае першапачатковае асяроддзе, і наступны выклік sh зноў яго ўспадкоўвае.

Каб змяніць працэс Ruby для далейшай працы:

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

Гэта ўплывае на наступныя даччыныя працэсы і на код Ruby, які чытае гэтыя ключы. Ён не пераканфігуруе тэрмінал, які першапачаткова запусціў Rake.

Для адной даччынай каманды перадайце яе асяроддзе непасрэдна:

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

Інтэрфейс запуску працэсаў Ruby трактуе значэнні nil як выдаленне з асяроддзя гэтага даччынага працэсу. Rake перадае спіс аргументаў гэтаму інтэрфейсу, пакідаючы ўласны ENV нязменным.

Выдаліце ключы, якія датычацца фактычнага кліента. Аперацыя HTTPS можа таксама выкарыстоўваць https_proxy, а некаторыя кліенты звяртаюцца да ALL_PROXY або іншага файла канфігурацыі. Выдаленне аднаго ключа HTTP не з'яўляецца ўніверсальнай інструкцыяй прамога маршруту.

Форма з некалькімі аргументамі захоўвае аргументы выканальнага файла асобна. Няма патрэбы будаваць радок абалонкі з камандай скасавання і URL.

Падобныя артыкулы