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 മാത്രം നീക്കുന്നത് സാർവത്രിക direct-route നിർദ്ദേശമല്ല.
ഒന്നിലധികം argument ഉള്ള രൂപം പ്രവർത്തനക്ഷമമായ argument-കൾ വേർതിരിച്ച് നിർത്തുന്നു. unset കമാൻഡും URL-ഉം ഉള്ള shell string നിർമ്മിക്കേണ്ട ആവശ്യമില്ല.