Rake 셸은 Ruby의 프록시를 해제할 수 없다
격리된 sh 호출 안에서 프록시를 해제하는 대신 이후 작업을 위해 Ruby의 ENV를 바꾸거나 자식 프로세스 전용 환경 해시를 넘기세요.
sh 'unset http_proxy' 해당 호출을 위해 실행되는 셸을 바꿉니다. 셸이 종료되어도 Rake의 Ruby 프로세스는 원래 환경을 그대로 유지하며, 이후의 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이 들어간 셸 문자열을 만들 필요가 없습니다.