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 list તે ઇન્ટરફેસને આપે છે, જેથી તેનું પોતાનું ENV અબદલ રહે છે.

વાસ્તવિક client માટે સંબંધિત keys દૂર કરો. HTTPS કામગીરી https_proxy પણ વાપરી શકે છે, અને કેટલાક client ALL_PROXY અથવા બીજી configuration ફાઇલ જુએ છે. ફક્ત એક HTTP key દૂર કરવી એ સાર્વત્રિક direct-route સૂચના નથી.

બહુ-argument સ્વરૂપ એક્ઝિક્યુટેબલ argumentsને અલગ રાખે છે. unset આદેશ અને URL ધરાવતી shell string બનાવવાની જરૂર નથી.

સંબંધિત લેખો