рд╣рдо рд╕реИрдХрдбрд╝реЛрдВ рдЙрдк-рдШрдЯрдХреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдмрд╣реБрдд рдмрдбрд╝рд╛ рдРрдк рдЪрд▓рд╛ рд░рд╣реЗ рд╣реИрдВ рдЬреЛ рдХреБрдЫ рд╣рдж рддрдХ рдлреИрд░рд╛рдбреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдЗрдирдореЗрдВ рд╕реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдШрдЯрдХ рдлреИрд░рд╛рдбреЗ рдХреЛ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ http_proxy
рдЖрджрд┐ рдХреЗ рд╕рд╛рде рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рддреЗ рд╣реИрдВ; рд╡реЗ рдХрдиреЗрдХреНрд╢рди рдирд┐рд░реНрдорд╛рдгрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдПрдХ рд╕реНрдкрд╖реНрдЯ :proxy
рд╕реЗрдЯрд┐рдВрдЧ рдкрд╛рд╕ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред
рд╣рд╛рд▓рд╛рдВрдХрд┐, рдХреБрдЫ рдШрдЯрдХреЛрдВ (рд▓рдЧрднрдЧ 100 рдореЗрдВ рд╕реЗ 2 рдпрд╛ 3) рдХреЛ рдмрд┐рдирд╛ рдкреНрд░реЙрдХреНрд╕реА рдХреЗ рдлреИрд░рд╛рдбреЗ рдХрдиреЗрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╣рдо Faraday.ignore_env_proxy = true
рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ, рдЕрдиреНрдпрдерд╛ рд╢реЗрд╖ ~100 рдШрдЯрдХ рдЯреВрдЯ рдЬрд╛рддреЗ рд╣реИрдВред
рдореИрдВ рдЬреЛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рд╡рд╣ рдЙрди рдХреБрдЫ рдШрдЯрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдлреИрд░рд╛рдбреЗ рдХрдиреЗрдХреНрд╢рди рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИ рдЬреЛ рдкреНрд░реЙрдХреНрд╕реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рди рд╣реА рдкрд░реНрдпрд╛рд╡рд░рдг рд╕реЗ рдФрд░ рди рд╣реА рдЕрдиреНрдпрдерд╛ред
#752 рдХреЗ рд╕рдорд╛рди, рдпрд╣ рдПрдХ рдлреИрд░рд╛рдбреЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдХрдиреЗрдХреНрд╢рди рдмрдирд╛рддреЗ рд╕рдордп рдкрд░реНрдпрд╛рд╡рд░рдг рд╕реЗ рдкреНрд░реЙрдХреНрд╕реА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛:
c = Faraday.new('https://www.google.com', proxy: nil)
рдореИрдВрдиреЗ рднреА рдмрд╣реБрдд рд╕реНрдорд╛рд░реНрдЯ рд╣реЛрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдФрд░ рдПрдХ рдЦрд╛рд▓реА рд╣реИрд╢ рдХреЛ рдкреНрд░реЙрдХреНрд╕реА рд╡рд┐рдХрд▓реНрдк рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд╕ рдХрд┐рдпрд╛, рдЬреИрд╕реЗ:
c = Faraday.new('https://www.google.com', proxy: {})
рд▓реЗрдХрд┐рди рдЗрд╕ рдХрдиреЗрдХреНрд╢рди рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ:
NoMethodError: undefined method `hostname' for nil:NilClass
from vendor/bundle/ruby/2.4.0/gems/faraday-0.15.4/lib/faraday/adapter/net_http.rb:97:in `net_http_connection'
рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рдпрд╣ (рдпрд╛ :proxy
рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ "рдкреНрд░реЙрдХреНрд╕реА рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВ" рдХрд╣рдиреЗ рдХрд╛ рджреВрд╕рд░рд╛ рддрд░реАрдХрд╛) рд╕рдорд░реНрдерд┐рдд рд╣реЛрдирд╛ рдореЗрд░реЗ рд▓рд┐рдП рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╣рд▓ рдХрд░реЗрдЧрд╛ред
@ asf-stripe рдореИрдВрдиреЗ рдХрднреА рдРрд╕рд╛ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХреА рд╣реИ (рдпрд╣ рдЖрдорддреМрд░ рдкрд░ рд╕рднреА рдпрд╛ рдХреЛрдИ рдирд╣реАрдВ рд╣реИ), рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рд╕реЗрдЯрд░ рдХреЗ рд╕рд╛рде рдХрдиреЗрдХреНрд╢рди рдкреНрд░рд╛рд░рдВрдн рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдкреНрд░реЙрдХреНрд╕реА рдХреЛ рд╢реВрдиреНрдп рдкрд░ рд╕реЗрдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (https://github.com/lostisland/faraday/blob /рдорд╛рд╕реНрдЯрд░/рд▓рд┐рдм/рдлреИрд░рд╛рдбреЗ/рдХрдиреЗрдХреНрд╢рди.рдЖрд░рдмреА#рдПрд▓397
c = Faraday.new('https://www.google.com')
c.proxy = nil
рдпрд╣ @manual_proxy
env рдХреЛ рд╕рд╣реА рдкрд░ рд╕реЗрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдлреИрд░рд╛рдбреЗ рдХреЛ рдЙрд╕ рд╡рд┐рд╢реЗрд╖ рдХрдиреЗрдХреНрд╢рди рдХреЗ рд▓рд┐рдП env рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдХреГрдкрдпрд╛ рдореБрдЭреЗ рдмрддрд╛рдПрдВ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ
рдУрдПрдордЬреА, рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рдХрд╛рдордХрд╛рдЬ рд╣реИред рдЕрдм рддрдХ рд╣рдордиреЗ рдЬреЛ рдХрд┐рдпрд╛ рд╡рд╣ рдЗрд╕ рддрд░рд╣ рдХрд╛ рдПрдХ рдорд┐рдбрд▓рд╡реЗрдпрд░ рдерд╛ (рдСрдХреНрдЯреЛрдХрд┐рдЯ рдХреЗ рд╣рдорд╛рд░реЗ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП):
# A Faraday middleware that throws out any configured proxy away
# from the request environment, to make connections to GHE work
# (those must not be proxied).
class ProxyDroppingMiddleware < Faraday::Middleware
def call(request_env)
request_env[:request][:proxy] = nil
@app.call(request_env)
end
end
рдФрд░ рдлрд┐рд░, рдЬрдм рдСрдХреНрдЯреЛрдХрд┐рдЯ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рдЖрддрд╛ рд╣реИ:
stack = Faraday::RackBuilder.new do |builder|
builder.use ProxyDroppingMiddleware
# What follows is the default octokit middleware:
builder.use Faraday::Request::Retry, exceptions: [Octokit::ServerError]
builder.use Octokit::Middleware::FollowRedirects
builder.use Octokit::Response::RaiseError
builder.use Octokit::Response::FeedParser
builder.adapter Faraday.default_adapter
end
options[:middleware] = stack
рдореИрдВ рдЬреЛ рдХрд╣ рд╕рдХрддрд╛ рд╣реВрдВ, рдорд┐рдбрд▓рд╡реЗрдпрд░ рд╡рд░реНрдХ-рдЕрд░рд╛рдЙрдВрдб рдСрдХреНрдЯреЛрдХрд┐рдЯ рдХреЗ рд╕рд╛рде рдЕрдзрд┐рдХ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░реЗрдЧрд╛, рдЕрдиреНрдпрдерд╛ рд╣рдореЗрдВ рдирд┐рд░реНрдорд╛рдг рдХреЗ рдмрд╛рдж рдлреИрд░рд╛рдбреЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдкреИрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдСрдХреНрдЯреЛрдХрд┐рдЯ рд░реИрдкрд░ рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛ред
рдЖрд╣ рд╣рд╛рдБ, рдореЗрд░рд╛ рд╕рдорд╛рдзрд╛рди рдХреЗрд╡рд▓ рддрднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЬрдм рдЖрдкрдХреЗ рдкрд╛рд╕ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХрдиреЗрдХреНрд╢рди рддрдХ рдкрд╣реБрдВрдЪ рд╣реЛ (рдпрд╛ рддреЛ рдПрдХ рд░реИрдкрд░ рдпрд╛ instance_variable_get
рдЬреИрд╕реА рдЪреАрдЬреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ)ред рдореИрдВрдиреЗ рдорд╛рди рд▓рд┐рдпрд╛ рдерд╛ рдХрд┐ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЕрдкрдиреА рдкрд╣рд▓реА рдкреЛрд╕реНрдЯ рдореЗрдВ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рдкреНрд░рдпрд╛рд╕реЛрдВ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП рдпрд╣реА рдорд╛рдорд▓рд╛ рдерд╛ред
рдореЗрд░реЗ рд╕реБрдЭрд╛рд╡ рдХреЛ рд╕реБрдирдХрд░ рдЦреБрд╢реА рд╣реБрдИ рдФрд░ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЕрдиреНрдп рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╕реНрдЯрдо рдорд┐рдбрд▓рд╡реЗрдпрд░ рднреА рд╣реИред
рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдмрдВрдж рдХрд░ рджреВрдВрдЧрд╛ рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдкрдХреЛ рдЕрднреА рднреА рдХрд┐рд╕реА рдорджрдж рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ рддреЛ рдХреГрдкрдпрд╛ рд╕рдВрдкрд░реНрдХ рдХрд░реЗрдВ
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдУрдПрдордЬреА, рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рдХрд╛рдордХрд╛рдЬ рд╣реИред рдЕрдм рддрдХ рд╣рдордиреЗ рдЬреЛ рдХрд┐рдпрд╛ рд╡рд╣ рдЗрд╕ рддрд░рд╣ рдХрд╛ рдПрдХ рдорд┐рдбрд▓рд╡реЗрдпрд░ рдерд╛ (рдСрдХреНрдЯреЛрдХрд┐рдЯ рдХреЗ рд╣рдорд╛рд░реЗ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП):
рдФрд░ рдлрд┐рд░, рдЬрдм рдСрдХреНрдЯреЛрдХрд┐рдЯ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рдЖрддрд╛ рд╣реИ:
рдореИрдВ рдЬреЛ рдХрд╣ рд╕рдХрддрд╛ рд╣реВрдВ, рдорд┐рдбрд▓рд╡реЗрдпрд░ рд╡рд░реНрдХ-рдЕрд░рд╛рдЙрдВрдб рдСрдХреНрдЯреЛрдХрд┐рдЯ рдХреЗ рд╕рд╛рде рдЕрдзрд┐рдХ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░реЗрдЧрд╛, рдЕрдиреНрдпрдерд╛ рд╣рдореЗрдВ рдирд┐рд░реНрдорд╛рдг рдХреЗ рдмрд╛рдж рдлреИрд░рд╛рдбреЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдкреИрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдСрдХреНрдЯреЛрдХрд┐рдЯ рд░реИрдкрд░ рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛ред