Faraday: Переопределение настроек прокси среды

Созданный на 28 нояб. 2017  ·  5Комментарии  ·  Источник: lostisland/faraday

Я не могу понять, есть ли метод с Фарадеем для переопределения настроек прокси-сервера переменных среды (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)

feature help wanted

Самый полезный комментарий

@ guille-moe решение, которое я планирую исправить, проблема @ jeffb-stell должно позволить вам также отключить эти предупреждения специально.

Все 5 Комментарий

Привет @ 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, если бы вы могли потратить несколько минут, чтобы протестировать его в своих приложениях, тогда я был бы увереннее в его объединении 😄
Также приветствуются предложения по дополнительным тестам 👍

Была ли эта страница полезной?
0 / 5 - 0 рейтинги