Faraday: рдкрд░реНрдпрд╛рд╡рд░рдгреАрдп рдкреНрд░реЙрдХреНрд╕реА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдирд╛

рдХреЛ рдирд┐рд░реНрдорд┐рдд 28 рдирд╡ре░ 2017  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: lostisland/faraday

рдореИрдВ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрде рд╣реВрдВ рдХрд┐ рдкрд░реНрдпрд╛рд╡рд░рдг рдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдкреНрд░реЙрдХреНрд╕реА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ (http_proxy, https_proxy, no_proxy) рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлреИрд░рд╛рдбреЗ рдХреЗ рд╕рд╛рде рдХреЛрдИ рд╡рд┐рдзрд┐ рд╣реИ рдпрд╛ рдирд╣реАрдВред рдореИрдВрдиреЗ proxy=nil рдХреЛ Faraday.new рддрд░реНрдХ рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдмреНрд▓реЙрдХ рдореЗрдВ рд╕реЗрдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ:

> 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) рдпрд╛ рдХреБрдЫ рдРрд╕реЗ рдкреНрд░реЙрдХреНрд╕реА рдХреЗ рд░реВрдк рдореЗрдВ рдЕрд╕рд╛рдЗрди рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдФрд░ рдпрд╣ рдЕрднреА рднреА рдПрдХ рдЧреИрд░-рд╢реВрдиреНрдп рдкреНрд░реЙрдХреНрд╕реА рдЙрддреНрдкрдиреНрди рдХрд░ рд░рд╣рд╛ рд╣реИ

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

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕ рдорд╛рдорд▓реЗ рдХреЛ рдареАрдХ рд╕реЗ рд╕рдВрднрд╛рд▓рддреЗ рдирд╣реАрдВ рджрд┐рдЦ рд░рд╣реЗ рд╣реИрдВред рдХреЛрдИ рд╡рд┐рдЪрд╛рд░?

(рдХреЛрдб рдбрд╛рдЗрд╡рд┐рдВрдЧ рдХрд░рддреЗ рд╕рдордп рдРрд╕рд╛ рд▓рдЧрддрд╛ рдерд╛ рдХрд┐ рд╡рд┐рдХрд▓реНрдк рдкрд╛рд░реНрд╕рд┐рдВрдЧ рд╢рд╛рдпрдж рд╕реНрдкрд╖реНрдЯ рд╢реВрдиреНрдп рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕рдВрднрд╛рд▓ рдирд╣реАрдВ рдкрд╛рддрд╛ рд╣реИ)

feature help wanted

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

@ guille-moe рд╕рдорд╛рдзрд╛рди рдореИрдВ @ jeffb-stell рдореБрджреНрджреЗ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣рд╛ рд╣реВрдВ, рдЖрдкрдХреЛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЙрди рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдХреЛ рдЪреБрдк рдХрд░рд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреА рдЪрд╛рд╣рд┐рдПред

рд╕рднреА 5 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рд╣рд╛рдп @ рдЬреЗрдлрдм-рд╕реНрдЯреЗрд▓,

рдореЗрд░реА рд╕рдордЭ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк рдлреИрд░рд╛рдбреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рд╡рд░рдг рдкреНрд░реЙрдХреНрд╕реА рдорд╛рди рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред
рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рдордЭ рдирд╣реАрдВ рдкрд╛ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдЖрдк рдРрд╕рд╛ рдХреНрдпреЛрдВ рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдЬрд╛рд╣рд┐рд░ рддреМрд░ рдкрд░ рдЙрд╕ рдорд╛рдорд▓реЗ рдкрд░ рдЕрдм рддрдХ рдХрднреА рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдкрд╣рд▓реЗ рд╣реА рдЕрдкрдиреЗ рд▓рд┐рдП рдЦреЛрдЬ рдЪреБрдХреЗ рд╣реИрдВ, рдпрджрд┐ рдЖрдк nil рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ рддреЛ ProxyOptions рдереЛрдбрд╝рд╛ рдкрд╛рдЧрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реАрд▓рд┐рдП рдЖрдкрдХрд╛ рдХреЛрдИ рднреА рд╕рдорд╛рдзрд╛рди рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
рдореИрдВ рдЗрд╕реЗ рдкреАрдЖрд░ рдХреЗ рд╕рд╛рде рдареАрдХ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдХреЗрд╡рд▓ рдлреИрд░рд╛рдбреЗ 0.14.0 рдпрд╛ 0.14.1 рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧрд╛ рдЬрдм рдЗрд╕реЗ рд░рд┐рд▓реАрдЬрд╝ рдорд┐рд▓реЗрдЧрд╛, рдЗрд╕рд▓рд┐рдП рд╕рдордп рдЖрдиреЗ рдкрд░ рдЖрдкрдХреЛ рдкреНрд░рддреАрдХреНрд╖рд╛ рдФрд░ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА (рдкреАрдЖрд░ рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ) рдпрджрд┐ рдЖрдк рдпреЛрдЧрджрд╛рди рджреЗрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ!)

рдЗрд╕ рдмреАрдЪ, рдПрдХ рд╕рдВрднрд╛рд╡рд┐рдд рддреНрд╡рд░рд┐рдд рд╕рдорд╛рдзрд╛рди рдпрд╣ рд╣реЛрдЧрд╛ рдХрд┐ рдЖрдк рдЕрдкрдиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд┐рдП рдЧрдП 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 env рдорд┐рд▓рддрд╛ рд╣реИ: https://docs.docker.com/docker -рдлреЙрд░-рдореИрдХ/рдиреЗрдЯрд╡рд░реНрдХрд┐рдВрдЧ/ рдЗрддрдиреЗ рд╕рд╛рд░реЗ рдЪреЗрддрд╛рд╡рдиреА ....

рдореЗрд░реЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рдХреНрдпрд╛ рд╣реИ рдпрд╛ рдлреИрд░рд╛рдбреЗ рдХреЗ рд▓рд┐рдП рд╕реБрдзрд╛рд░? (рдЬрд▓реНрдж рд╣реА рдПрдХ рдкреАрдЖрд░ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ)

рдХреНрдпрд╛ рдЗрд╕реЗ рдХреБрдЫ рд╕реНрдкрд╖реНрдЯ рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреИрд╕реЗ ENV['FARADAY_SILENCE_INTERNAL_WARNINGS'] ?

рдпрд╛, @ рдЧрд┐рд▓-рдореЛ 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

рдореИрдВрдиреЗ рдЕрднреА рддрдХ рдкреАрдЖрд░ рдХреЛ рдорд░реНрдЬ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рдЕрдЧрд░ рдЖрдк рдЗрд╕реЗ рдЕрдкрдиреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдорд┐рдирдЯ рдЦрд░реНрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рддреЛ рдЗрд╕рд╕реЗ рдореБрдЭреЗ рдЗрд╕реЗ рд╡рд┐рд▓рдп рдХрд░рдиреЗ рдореЗрдВ рдЕрдзрд┐рдХ рд╡рд┐рд╢реНрд╡рд╛рд╕ рд╣реЛрдЧрд╛
рдЕрддрд┐рд░рд┐рдХреНрдд рдкрд░реАрдХреНрд╖рдгреЛрдВ рдкрд░ рднреА рд╕реБрдЭрд╛рд╡реЛрдВ рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИ

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

olleolleolle picture olleolleolle  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

asf-stripe picture asf-stripe  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

jordansissel picture jordansissel  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

iMacTia picture iMacTia  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

Lewiscowles1986 picture Lewiscowles1986  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ