Ένα κέλυφος Rake δεν μπορεί να αφαιρέσει το proxy του Ruby
Αλλάξτε το ENV του Ruby για τις επόμενες εργασίες ή δώστε ξεχωριστό hash περιβάλλοντος για το παιδί αντί να αφαιρέσετε το proxy μέσα σε μια απομονωμένη κλήση sh.
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.