Faraday: Anulación de la configuración de proxy ambiental

Creado en 28 nov. 2017  ·  5Comentarios  ·  Fuente: lostisland/faraday

No puedo averiguar si hay un método con Faraday para anular la configuración del proxy de la variable de entorno (http_proxy, https_proxy, no_proxy). Intenté configurar proxy=nil en un argumento y bloque de configuración Faraday.new , pero eso no parece funcionar:

> 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/>>>

Ese último resultado es ProxyOptions.from(URI::Generic) o algo así que se asigna como proxy, y todavía produce un proxy que no es nulo.

https://github.com/lostisland/faraday/blob/master/lib/faraday/adapter/net_http.rb#L88 -L94

Realmente no parece manejar este caso correctamente. ¿Algunas ideas?

(Mientras se buceaba el código, parecía que el análisis de opciones probablemente no maneja bien la configuración nula explícita)

feature help wanted

Comentario más útil

@ guille-moe, la solución que planeo solucionar el problema @ jeffb-stell debería permitirle silenciar también esas advertencias específicamente.

Todos 5 comentarios

Hola @ jeffb-stell,

Tengo entendido que desea ignorar el valor de proxy del entorno para Faraday.
Realmente no entiendo por qué le gustaría hacer eso, pero aparentemente ese caso nunca se consideró hasta ahora.
Como ya descubrió por sí mismo, ProxyOptions se vuelve un poco loco si pasa nil y es por eso que ninguna de sus soluciones funciona.
Puedo intentar solucionar esto con un PR, pero eso solo estará disponible en Faraday 0.14.0 o 0.14.1 cuando se publiquen, por lo que deberá esperar y actualizar cuando llegue el momento (es posible que revise un PR si quieres contribuir!).

Mientras tanto, una posible solución rápida sería iniciar su aplicación con la variable ENV anulada. Simplemente anteponga env -u http_proxy al comando que usa para ejecutarlo. Por ejemplo:

# For the Ruby console
env -u http_proxy irb

# For Rails
env -u http_proxy rails

Hola @iMacTia ,

El mismo problema, realmente no quiero cambiar / deshabilitar nada, pero con warn en no_proxy env (https://github.com/lostisland/faraday/blob/4d1ddc130bd224adf25a19eaf0e81fd236a47285/lib/ faraday / connection.rb # L460) cuando uso faraday (o una gema que es) dentro de un contenedor docker en macOS de forma predeterminada, obtengo un no_proxy env: https://docs.docker.com/docker -for-mac / networking / muchos advierten ....

¿Cuál es la mejor solución para mí o mejora para Faraday? (Puedo proponer un PR pronto)

¿Podría llamarse algo explícito como ENV['FARADAY_SILENCE_INTERNAL_WARNINGS'] ?

O, @ guille-moe es RUBYOPT=-W0 - silencio warn todo momento, ¿no es práctico en su caso de uso?

@ guille-moe, la solución que planeo solucionar el problema @ jeffb-stell debería permitirle silenciar también esas advertencias específicamente.

@ guille-moe @ jeffb-stell
Introduje una nueva configuración en el n. ° 754, ahora puede deshabilitar la detección de proxy env de esta manera:

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

Aún no he fusionado el PR, si pudiera dedicar unos minutos a probarlo en sus aplicaciones, me haría más seguro fusionarlo 😄
También se aceptan sugerencias sobre pruebas adicionales 👍

¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

ryanbyon picture ryanbyon  ·  3Comentarios

Lewiscowles1986 picture Lewiscowles1986  ·  4Comentarios

mvastola picture mvastola  ·  4Comentarios

t3hk0d3 picture t3hk0d3  ·  3Comentarios

jordansissel picture jordansissel  ·  5Comentarios