Rake ஷெல்லால் Ruby இன் proxy ஐ நீக்க முடியாது
அடுத்தடுத்த பணிகளுக்கு Ruby இன் ENV ஐ மாற்றுங்கள் அல்லது தனிமைப்படுத்தப்பட்ட sh அழைப்புக்குள் proxy ஐ நீக்குவதற்குப் பதிலாக குழந்தைக்கு தனி environment hash வழங்குங்கள்.
sh 'unset http_proxy' அந்த அழைப்புக்காகத் தொடங்கப்படும் ஷெல்லை மாற்றுகிறது. அது வெளியேறும்போது, Rake இல் உள்ள Ruby செயல்முறை இன்னும் அதன் அசல் environment ஐக் கொண்டுள்ளது, பின்னர் வரும் sh அழைப்பு அதை மீண்டும் மரபுரிமையாகப் பெறுகிறது.
அடுத்த வேலைக்காக Ruby செயல்முறையை மாற்ற:
ENV.delete('http_proxy')
ENV.delete('HTTP_PROXY')
இது பின்னர் வரும் குழந்தைகளையும் அந்த keys ஐப் படிக்கும் Ruby குறியீட்டையும் பாதிக்கிறது. இது முதலில் Rake ஐத் தொடங்கிய முனையத்தை மறுகட்டமைக்காது.
ஒரு குழந்தை கட்டளைக்கு, அதன் environment ஐ நேரடியாக வழங்குங்கள்:
sh(
{ 'http_proxy' => nil, 'HTTP_PROXY' => nil },
'ruby', 'download.rb'
)
Ruby இன் செயல்முறை-தொடக்க இடைமுகம் nil மதிப்புகளை அந்தக் குழந்தையின் environment இலிருந்து நீக்கங்களாகக் கருதுகிறது. Rake argument பட்டியலை அந்த இடைமுகத்திற்கு அனுப்பி, அதன் சொந்த ENV ஐ மாற்றமின்றி விடுகிறது.
உண்மையான client உடன் தொடர்புடைய keys ஐ நீக்குங்கள். HTTPS செயல்பாடு https_proxy ஐயும் பயன்படுத்தலாம், சில client ALL_PROXY அல்லது மற்றொரு configuration கோப்பைப் பார்க்கின்றன. ஒரே ஒரு HTTP key ஐ நீக்குவது உலகளாவிய நேரடி-வழி அறிவுறுத்தல் அல்ல.
பல-argument வடிவம் இயக்கக்கூடிய கோப்பின் arguments ஐத் தனியாக வைத்திருக்கிறது. நீக்கும் கட்டளையும் URL உம் கொண்ட shell சரத்தை உருவாக்க வேண்டியதில்லை.