Saya tidak dapat mengetahui apakah ada metode dengan Faraday untuk mengganti pengaturan proxy variabel lingkungan (http_proxy, https_proxy, no_proxy). Saya telah mencoba menyetel proxy=nil
dalam argumen Faraday.new
dan blok konfigurasi, tetapi tampaknya tidak berhasil:
> 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/>>>
Hasil terakhir itu adalah ProxyOptions.from(URI::Generic)
atau semacamnya yang ditetapkan sebagai proxy, dan masih menghasilkan proxy non-nihil
https://github.com/lostisland/faraday/blob/master/lib/faraday/adapter/net_http.rb#L88 -L94
Sepertinya tidak menangani kasus ini dengan benar. Ada ide?
(Saat menyelam kode, tampaknya opsi penguraian mungkin tidak menangani pengaturan nol eksplisit dengan baik)
Hai @jeffb-stell,
pemahaman saya adalah bahwa Anda ingin mengabaikan nilai proxy lingkungan untuk Faraday.
Saya tidak begitu mengerti mengapa Anda ingin melakukan itu, tetapi tampaknya kasus itu tidak pernah dipertimbangkan sampai sekarang.
Seperti yang sudah Anda ketahui sendiri, ProxyOptions menjadi sedikit gila jika Anda melewati nil
dan itulah sebabnya tidak ada solusi yang berfungsi.
Saya dapat mencoba untuk memperbaikinya dengan PR, tetapi itu hanya akan tersedia di Faraday 0.14.0 atau 0.14.1 ketika akan dirilis, jadi Anda harus menunggu dan memperbarui ketika saatnya tiba (mungkin untuk meninjau PR jika Anda ingin berkontribusi!).
Sementara itu, perbaikan cepat yang mungkin adalah meluncurkan aplikasi Anda dengan variabel ENV yang diganti. Cukup tambahkan env -u http_proxy
ke perintah yang Anda gunakan untuk meluncurkannya. Sebagai contoh:
# For the Ruby console
env -u http_proxy irb
# For Rails
env -u http_proxy rails
Hai @iMacTia ,
Masalah yang sama, saya tidak benar-benar ingin mengubah/menonaktifkan apa pun kecuali dengan warn
pada no_proxy
env (https://github.com/lostisland/faraday/blob/4d1ddc130bd224adf25a19eaf0e81fd236a47285/lib/ faraday/connection.rb#L460) ketika saya menggunakan faraday (atau permata yang itu) di dalam wadah buruh pelabuhan di macOS secara default saya mendapatkan no_proxy
env: https://docs.docker.com/docker -for-mac/networking/ begitu banyak yang memperingatkan ....
Apa solusi terbaik untuk saya atau perbaikan untuk Faraday? (Dapat mengusulkan PR segera)
Bisakah itu disebut sesuatu yang eksplisit seperti ENV['FARADAY_SILENCE_INTERNAL_WARNINGS']
?
Atau, @guille-moe adalah RUBYOPT=-W0
- membungkam warn
keseluruhan, tidak praktis dalam kasus penggunaan Anda?
@guille-moe solusi yang saya rencanakan untuk perbaiki @jeffb-stell masalah harus memungkinkan Anda juga membungkam peringatan itu secara khusus.
@guille-moe @jeffb-stell
Saya telah memperkenalkan pengaturan baru di #754, Anda sekarang dapat menonaktifkan deteksi proxy env seperti ini:
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
Saya belum menggabungkan PR, jika Anda dapat meluangkan beberapa menit untuk mengujinya ke dalam aplikasi Anda, itu akan membuat saya lebih percaya diri dalam menggabungkannya
Juga saran tentang tes tambahan dipersilakan 👍
Komentar yang paling membantu
@guille-moe solusi yang saya rencanakan untuk perbaiki @jeffb-stell masalah harus memungkinkan Anda juga membungkam peringatan itu secara khusus.