環境変数プロキシ設定(http_proxy、https_proxy、no_proxy)をオーバーライドするためのFaradayのメソッドがあるかどうかを理解できません。 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設定をうまく処理しないようでした)
こんにちは@ jeffb-stell、
私の理解では、ファラデーの環境プロキシ値を無視したいということです。
なぜそうしたいのかよくわかりませんが、今まで考えられなかったようです。
すでにご存知のとおり、 nil
を渡すと、ProxyOptionsが少しおかしくなります。そのため、どのソリューションも機能しません。
PRでこれを修正することはできますが、リリースがリリースされるファラデー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 、
同じ問題ですが、 no_proxy
env(https://github.com/lostisland/faraday/blob/4d1ddc130bd224adf25a19eaf0e81fd236a47285/lib/)のwarn
以外は、実際には何も変更/無効化したくありません。 faraday / connection.rb#L460)macOSのdockerコンテナー内でfaraday(またはそれであるgem)をデフォルトで使用すると、 no_proxy
envを取得します: https :
私にとって最良の解決策またはファラデーの改善は何ですか? (すぐに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をマージしていません。アプリケーションにテストするために数分を費やすことができれば、それをマージすることに自信が持てるようになります😄
追加のテストに関する提案も歓迎します👍
最も参考になるコメント
@ guille-moe @ jeffb-stellの問題を修正する予定のソリューションでは、これらの警告を具体的に消音することもできます。