Faraday: ν™˜κ²½ ν”„λ‘μ‹œ μ„€μ • μž¬μ •μ˜

에 λ§Œλ“  2017λ…„ 11μ›” 28일  Β·  5μ½”λ©˜νŠΈ  Β·  좜처: lostisland/faraday

Faraday에 ν™˜κ²½ λ³€μˆ˜ ν”„λ‘μ‹œ μ„€μ •(http_proxy, https_proxy, no_proxy)을 μž¬μ •μ˜ν•˜λŠ” 방법이 μžˆλŠ”μ§€ νŒŒμ•…ν•  수 μ—†μŠ΅λ‹ˆλ‹€. Faraday.new 인수 및 ꡬ성 λΈ”λ‘μ—μ„œ proxy=nil 섀정을 μ‹œλ„ν–ˆμ§€λ§Œ μž‘λ™ν•˜μ§€ μ•ŠλŠ” 것 κ°™μŠ΅λ‹ˆλ‹€.

> c = Faraday.new('https://www.google.com', proxy: nil)
 => #<Faraday::Connection:0x00007fd1e2176180 @parallel_manager=nil, @headers={"User-Agent"=>"Faraday v0.13.1"}, @params={}, @options=#<Faraday::RequestOptions (empty)>, @ssl=#<Faraday::SSLOptions (empty)>, @default_parallel_manager=nil, @builder=#<Faraday::RackBuilder:0x00007fd1e2175d20 @handlers=[Faraday::Request::UrlEncoded, Faraday::Adapter::NetHttp]>, @url_prefix=#<URI::HTTPS https://www.google.com/>, @proxy=#<Faraday::ProxyOptions uri=#<URI::HTTP http://127.0.0.1:3128/>>, @temp_proxy=#<Faraday::ProxyOptions uri=#<URI::HTTP http://127.0.0.1:3128/>>>
> c = Faraday.new('https://www.google.com') { |c| c.proxy=nil 
c.adapter :net_http
}
(Object doesn't support #inspect)
> c = Faraday.new('https://www.google.com', proxy: '')
 => #<Faraday::Connection:0x00007fd1e28f2300 @parallel_manager=nil, @headers={"User-Agent"=>"Faraday v0.13.1"}, @params={}, @options=#<Faraday::RequestOptions (empty)>, @ssl=#<Faraday::SSLOptions (empty)>, @default_parallel_manager=nil, @builder=#<Faraday::RackBuilder:0x00007fd1e28f1d60 @handlers=[Faraday::Request::UrlEncoded, Faraday::Adapter::NetHttp]>, @url_prefix=#<URI::HTTPS https://www.google.com/>, @proxy=#<Faraday::ProxyOptions uri=#<URI::Generic >>, @temp_proxy=#<Faraday::ProxyOptions uri=#<URI::Generic >>>
> c = Faraday.new('https://www.google.com/') { |co|
2.4.2 :025 >     co.proxy = ''
2.4.2 :026?>   co.adapter :net_http
2.4.2 :027?>   }
 => #<Faraday::Connection:0x00007fe0af1bd4c8 @parallel_manager=nil, @headers={"User-Agent"=>"Faraday v0.13.1"}, @params={}, @options=#<Faraday::RequestOptions (empty)>, @ssl=#<Faraday::SSLOptions (empty)>, @default_parallel_manager=nil, @builder=#<Faraday::RackBuilder:0x00007fe0af1bd1d0 @handlers=[Faraday::Adapter::NetHttp]>, @url_prefix=#<URI::HTTPS https://nexus-gss.uscis.dhs.gov/>, @proxy=#<Faraday::ProxyOptions uri=#<URI::Generic >>, @temp_proxy=#<Faraday::ProxyOptions uri=#<URI::HTTP http://127.0.0.1:3128/>>>

κ·Έ λ§ˆμ§€λ§‰ κ²°κ³ΌλŠ” ProxyOptions.from(URI::Generic) λ˜λŠ” ν”„λ‘μ‹œλ‘œ ν• λ‹Ήλ˜λŠ” 것과 κ°™μœΌλ©° μ—¬μ „νžˆ nil이 μ•„λ‹Œ ν”„λ‘μ‹œλ₯Ό μƒμ„±ν•©λ‹ˆλ‹€.

https://github.com/lostisland/faraday/blob/master/lib/faraday/adapter/net_http.rb#L88 -L94

이 사건을 μ œλŒ€λ‘œ μ²˜λ¦¬ν•˜μ§€ λͺ»ν•˜λŠ” 것 κ°™μŠ΅λ‹ˆλ‹€. μ–΄λ–€ 아이디어?

(μ½”λ“œ 닀이빙 쀑에 μ˜΅μ…˜ ꡬ문 뢄석이 λͺ…μ‹œμ  nil 섀정을 잘 μ²˜λ¦¬ν•˜μ§€ λͺ»ν•˜λŠ” 것 κ°™μ•˜μŠ΅λ‹ˆλ‹€)

feature help wanted

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

@guille-moe @jeffb-stell 문제λ₯Ό μˆ˜μ •ν•  κ³„νšμΈ μ†”λ£¨μ…˜μ„ μ‚¬μš©ν•˜λ©΄ ν•΄λ‹Ή κ²½κ³ λ₯Ό ꡬ체적으둜 μΉ¨λ¬΅μ‹œν‚¬ μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€.

λͺ¨λ“  5 λŒ“κΈ€

μ•ˆλ…•ν•˜μ„Έμš” @jeffb-stellλ‹˜,

λ‚΄ μ΄ν•΄λŠ” νŒ¨λŸ¬λ°μ΄μ— λŒ€ν•œ ν™˜κ²½ ν”„λ‘μ‹œ 값을 λ¬΄μ‹œν•˜λ €λŠ” κ²ƒμž…λ‹ˆλ‹€.
μ™œ κ·Έλ ‡κ²Œ ν•˜κ³  싢은지 잘 이해가 μ•ˆ λ˜μ§€λ§Œ, μ§€κΈˆκΉŒμ§€ 그런 κ²½μš°λŠ” κ³ λ €λ˜μ§€ μ•Šμ€ 것 κ°™μŠ΅λ‹ˆλ‹€.
이미 슀슀둜 μ•Œμ•„λƒˆλ“―μ΄ nil λ₯Ό μ „λ‹¬ν•˜λ©΄ ProxyOptionsκ°€ μ•½κ°„ 이상해지며 이것이 μ†”λ£¨μ…˜μ΄ μž‘λ™ν•˜μ§€ μ•ŠλŠ” μ΄μœ μž…λ‹ˆλ‹€.
PR둜 이 문제λ₯Ό ν•΄κ²°ν•  μˆ˜λŠ” μžˆμ§€λ§Œ Faraday 0.14.0 λ˜λŠ” 0.14.1이 릴리슀될 λ•Œλ§Œ μ‚¬μš©ν•  수 μžˆμœΌλ―€λ‘œ μ‹œκ°„μ΄ 되면 κΈ°λ‹€λ Έλ‹€κ°€ μ—…λ°μ΄νŠΈν•΄μ•Ό ν•©λ‹ˆλ‹€(PR κ²€ν†  κΈ°μ—¬ν•˜κ³  μ‹Άλ‹€λ©΄!).

κ·Έ λ™μ•ˆ κ°€λŠ₯ν•œ λΉ λ₯Έ μˆ˜μ •μ€ ENV λ³€μˆ˜λ₯Ό μž¬μ •μ˜ν•˜μ—¬ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μ‹œμž‘ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€. μ‹œμž‘ν•˜λŠ” 데 μ‚¬μš©ν•˜λŠ” λͺ…λ Ή μ•žμ— env -u http_proxy λ₯Ό μΆ”κ°€ν•˜κΈ°

# For the Ruby console
env -u http_proxy irb

# For Rails
env -u http_proxy rails

μ•ˆλ…•ν•˜μ„Έμš” @iMacTia ,

같은 λ¬Έμ œλŠ” 정말 λ³€ν™” / λΉ„ν™œμ„±ν™” 아무것도 μ‹Άμ§€λ§Œν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€μ™€ warn 에 no_proxy ENV (https://github.com/lostisland/faraday/blob/4d1ddc130bd224adf25a19eaf0e81fd236a47285/lib/ faraday/connection.rb#L460) 기본적으둜 macOS의 도컀 μ»¨ν…Œμ΄λ„ˆ λ‚΄λΆ€μ—μ„œ 패러데이(λ˜λŠ” 보석)λ₯Ό μ‚¬μš©ν•  λ•Œ no_proxy ν™˜κ²½μ΄ ν‘œμ‹œλ©λ‹ˆλ‹€. https://docs.docker.com/docker -for-mac/networking/ λ„ˆλ¬΄ λ§Žμ€ κ²½κ³  ....

λ‚˜λ₯Ό μœ„ν•œ μ΅œμƒμ˜ μ†”λ£¨μ…˜ λ˜λŠ” Faraday의 κ°œμ„  사항은 λ¬΄μ—‡μž…λ‹ˆκΉŒ? (곧 PR μ œμ•ˆ κ°€λŠ₯)

ENV['FARADAY_SILENCE_INTERNAL_WARNINGS'] 와 같이 λͺ…μ‹œμ μ΄λΌκ³  ν•  수 μžˆμŠ΅λ‹ˆκΉŒ?

λ˜λŠ” @guille-moeλŠ” RUBYOPT=-W0 - warn λ‚΄λ‚΄ μΉ¨λ¬΅ν•˜μ§€λ§Œ μ‚¬μš© μ‚¬λ‘€μ—μ„œλŠ” μ‹€μš©μ μ΄μ§€ μ•ŠμŠ΅λ‹ˆκΉŒ?

@guille-moe @jeffb-stell 문제λ₯Ό μˆ˜μ •ν•  κ³„νšμΈ μ†”λ£¨μ…˜μ„ μ‚¬μš©ν•˜λ©΄ ν•΄λ‹Ή κ²½κ³ λ₯Ό ꡬ체적으둜 μΉ¨λ¬΅μ‹œν‚¬ μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€.

@guille-moe @jeffb-stell
#754에 μƒˆλ‘œμš΄ 섀정을 λ„μž…ν–ˆμŠ΅λ‹ˆλ‹€. 이제 λ‹€μŒκ³Ό 같이 env ν”„λ‘μ‹œ 감지λ₯Ό λΉ„ν™œμ„±ν™”ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

Faraday.ignore_env_proxy = true # new setting, defaults to false
ENV['http_proxy'] = 'http://test.proxy.com:80'

conn = Faraday::Connection.new(....)
# conn will NOT use the env proxy

아직 PR을 λ³‘ν•©ν•˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€. λͺ‡ λΆ„ 정도 μ‹œκ°„μ„ λ‚΄μ–΄ μ‘μš© ν”„λ‘œκ·Έλž¨μ— ν…ŒμŠ€νŠΈν•  수 μžˆλ‹€λ©΄ λ³‘ν•©ν•˜λŠ” 데 더 μžμ‹ κ°μ„ κ°–κ²Œ 될 κ²ƒμž…λ‹ˆλ‹€. πŸ˜„
μΆ”κ°€ ν…ŒμŠ€νŠΈμ— λŒ€ν•œ μ œμ•ˆλ„ ν™˜μ˜ν•©λ‹ˆλ‹€ πŸ‘

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰