Faraday: تجاوز إعدادات الوكيل البيئي

تم إنشاؤها على ٢٨ نوفمبر ٢٠١٧  ·  5تعليقات  ·  مصدر: lostisland/faraday

لا يمكنني معرفة ما إذا كانت هناك طريقة مع 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

لا يبدو أنه يتعامل مع هذه القضية بشكل صحيح. أيه أفكار؟

(أثناء الغوص في التعليمات البرمجية ، بدا أن تحليل الخيارات ربما لا يتعامل مع إعدادات صفرية واضحة بشكل جيد)

feature help wanted

التعليق الأكثر فائدة

@ guille-moe الحل الذي أخطط لإصلاح مشكلة @ jeffb-stell يجب أن يسمح لك أيضًا بإسكات تلك التحذيرات على وجه التحديد.

ال 5 كومينتر

مرحبًا @ jeffb-stell ،

ما أفهمه هو أنك تريد تجاهل قيمة الوكيل البيئي لـ Faraday.
لا أفهم حقًا سبب رغبتك في القيام بذلك ، ولكن يبدو أن هذه القضية لم يتم النظر فيها أبدًا حتى الآن.
كما اكتشفت بالفعل بنفسك ، فإن ProxyOptions تصبح مجنونة بعض الشيء إذا مررت nil وهذا هو السبب في عدم نجاح أي من الحلول الخاصة بك.
يمكنني محاولة إصلاح ذلك من خلال العلاقات العامة ، ولكن ذلك سيكون متاحًا فقط في Faraday 0.14.0 أو 0.14.1 عندما يتم إصدار إصدارات ، لذلك ستحتاج إلى الانتظار والتحديث عندما يحين الوقت (لمراجعة العلاقات العامة) إذا كنت تريد المساهمة!).

في غضون ذلك ، قد يكون الحل السريع المحتمل هو تشغيل التطبيق الخاص بك مع تجاوز متغير 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 -لماكنتوش / الشبكات / حذر الكثير ...

ما هو أفضل حل بالنسبة لي أو تحسين فاراداي؟ (يمكن اقتراح علاقات عامة قريبًا)

هل يمكن تسميته بشيء صريح مثل 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

لم أقم بدمج العلاقات العامة حتى الآن ، إذا كان بإمكانك قضاء بعض الدقائق لاختبارها في تطبيقاتك ، فهذا سيجعلني أكثر ثقة في دمجها 😄
نرحب أيضًا باقتراحات الاختبارات الإضافية 👍

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات