Faraday: Mengganti pengaturan proxy lingkungan

Dibuat pada 28 Nov 2017  ·  5Komentar  ·  Sumber: lostisland/faraday

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)

feature help wanted

Komentar yang paling membantu

@guille-moe solusi yang saya rencanakan untuk perbaiki @jeffb-stell masalah harus memungkinkan Anda juga membungkam peringatan itu secara khusus.

Semua 5 komentar

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 👍

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

mokolabs picture mokolabs  ·  3Komentar

mvastola picture mvastola  ·  4Komentar

amrrbakry picture amrrbakry  ·  4Komentar

jedeleh picture jedeleh  ·  3Komentar

jordansissel picture jordansissel  ·  5Komentar