Rake kabuğu Ruby'nin proxy'sini kaldıramaz
Ruby'nin ENV'sini sonraki görevler için değiştirin veya izole bir sh çağrısı içinde proxy'yi kaldırmak yerine alt sürece özel bir ortam hash'i verin.
sh 'unset http_proxy' o çağrı için başlatılan kabuğu değiştirir. Kabuk çıktığında, Rake'in Ruby süreci hâlâ özgün ortamına sahiptir ve sonraki bir sh çağrısı onu yeniden devralır.
Ruby sürecini sonraki işler için değiştirmek adına:
ENV.delete('http_proxy')
ENV.delete('HTTP_PROXY')
Bu, sonraki alt süreçleri ve bu anahtarları okuyan Ruby kodunu etkiler. Rake'i ilk başlatan terminali yeniden yapılandırmaz.
Tek bir alt komut için ortamını doğrudan verin:
sh(
{ 'http_proxy' => nil, 'HTTP_PROXY' => nil },
'ruby', 'download.rb'
)
Ruby'nin süreç başlatma arayüzü nil değerlerini o alt sürecin ortamından kaldırma olarak ele alır. Rake argüman listesini bu arayüze geçirir ve kendi ENV'sini değiştirmeden bırakır.
Gerçek istemciyle ilgili anahtarları kaldırın. Bir HTTPS işlemi https_proxy'yi de kullanabilir ve bazı istemciler ALL_PROXY'ye veya başka bir yapılandırma dosyasına bakar. Yalnızca bir HTTP anahtarını kaldırmak evrensel bir doğrudan rota talimatı değildir.
Çok argümanlı biçim, çalıştırılabilir dosyanın argümanlarını ayrı tutar. Bir kaldırma komutu ve URL içeren kabuk dizesi oluşturmaya gerek yoktur.