Я не могу понять, есть ли метод с Фарадеем для переопределения настроек прокси-сервера переменных среды (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
На самом деле, похоже, не справился с этим делом должным образом. Любые идеи?
(Во время погружения в код казалось, что синтаксический анализ параметров, вероятно, плохо справляется с явными настройками nil)
Привет @ jeffb-stell,
Насколько я понимаю, вы хотите игнорировать значение прокси окружения для Фарадея.
Я действительно не понимаю, почему вы хотите это сделать, но, видимо, этот случай до сих пор не рассматривался.
Как вы уже сами убедились, ProxyOptions становится немного сумасшедшим, если вы передадите nil
и поэтому ни одно из ваших решений не работает.
Я могу попытаться исправить это с помощью PR, но он будет доступен только в Faraday 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!
Та же проблема, я действительно не хочу ничего менять / отключать, кроме warn
на no_proxy
env (https://github.com/lostisland/faraday/blob/4d1ddc130bd224adf25a19eaf0e81fd236a47285/lib/ faraday / connection.rb # L460), когда я использую faraday (или драгоценный камень, которым он является) внутри контейнера докеров на macOS по умолчанию, я получаю no_proxy
env: https://docs.docker.com/docker -for-mac / сеть / многие предупреждают ....
Что для меня лучшее решение или улучшение для Фарадея? (Скоро могу предложить 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 должно позволить вам также отключить эти предупреждения специально.