Faraday: البرمجيات الوسيطة المسجل فقط تعطل

تم إنشاؤها على ٢٨ أكتوبر ٢٠١٣  ·  9تعليقات  ·  مصدر: lostisland/faraday

يتعطل هذا البرنامج البسيط لأنه عندما يتم استدعاء المسجل ، لا يوجد رؤوس وجسم بعد.

require 'faraday'

conn = Faraday.new(url: "http://google.com") {|config| config.response :logger}
conn.get "/"
/Users/synapse/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/faraday-0.8.8/lib/faraday/response/logger.rb:31:in `dump_headers': undefined method `map' for nil:NilClass (NoMethodError)
    from /Users/synapse/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/faraday-0.8.8/lib/faraday/response/logger.rb:25:in `block in on_complete'
    from /Users/synapse/.rbenv/versions/2.0.0-p247/lib/ruby/2.0.0/logger.rb:376:in `add'
    from /Users/synapse/.rbenv/versions/2.0.0-p247/lib/ruby/2.0.0/logger.rb:404:in `debug'
    from /Users/synapse/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/faraday-0.8.8/lib/faraday/response/logger.rb:25:in `on_complete'
    from /Users/synapse/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/faraday-0.8.8/lib/faraday/response.rb:9:in `block in call'
    from /Users/synapse/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/faraday-0.8.8/lib/faraday/response.rb:63:in `on_complete'
    from /Users/synapse/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/faraday-0.8.8/lib/faraday/response.rb:8:in `call'
    from /Users/synapse/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/faraday-0.8.8/lib/faraday/response/logger.rb:20:in `call'
    from /Users/synapse/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/faraday-0.8.8/lib/faraday/connection.rb:253:in `run_request'
    from /Users/synapse/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/faraday-0.8.8/lib/faraday/connection.rb:106:in `get'
    from faraday_bug.rb:4:in `<main>'

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

هذا متوقع. لا يمكن لأي من البرامج الوسيطة العمل بدون إجراء طلبات HTTP ، أي بدون مهايئ.

Faraday.new(url: "http://google.com") do |conn|
  conn.response :logger
  conn.adapter Faraday.default_adapter
end

ال 9 كومينتر

هذا متوقع. لا يمكن لأي من البرامج الوسيطة العمل بدون إجراء طلبات HTTP ، أي بدون مهايئ.

Faraday.new(url: "http://google.com") do |conn|
  conn.response :logger
  conn.adapter Faraday.default_adapter
end

mislav بينما هذا هو السلوك المتوقع ، يمكن أن تكون رسالة الخطأ الناتجة أكثر فائدة.

أتفق مع sethvargo ، يمكن أن تكون الرسالة أفضل.

في حالتي ، انتقلت من عدم وجود معلمات إلى Faraday.new ثم أضفت conn.response :logger . كنت أتوقع أن يكون adapter هو default_adapter افتراضيًا ، لذلك كنت في حيرة من أمري بسبب الخطأ الجديد. لم يساعدني ذلك في تصحيح أخطاء خطأ آخر ، لذلك اعتقدت أن هذا قد يكون عرضًا آخر لخطأ الأصلي.

أنا أيضا واجهت هذه المشكلة. أود أن أقول إن السلوك المتوقع هو أن Faraday يستخدم المحول الافتراضي إذا لم يتم تحديده.

إذا كنت تفضل عدم القيام بذلك ، فإن استثناء "محول غير محدد" سيوفر الكثير من خدش الرأس.

mislav كنت على وشك أن أقول بالضبط ما قاله @ bluefuton للتو. أعني أنه يسمى "default_adapter" ، مما يوحي بأنه الافتراضي.

أوه ، لقد تعرضت للعض من نفس الشيء. رسالة خطأ مشفرة لما هو خطأ شائع على الأرجح. (لقد أزلت مواصفات المحول لأنني افترضت خطأً أنه لا يلزم أن يكون صريحًا.)

mislav هل تقبل طلب سحب لتغيير الخطأ إلى شيء مثل "لم يتم تحديد محول"؟

أو (ولكن يبدو أنك لا تريد هذا) أن تفترض "المحول الافتراضي" إذا لم يتم تحديد أي شيء بشكل صريح؟

أوه ، يا pengwynn ، لاحظت أنك جزء من هذه المنظمة أيضًا. بما أن ميسلاف لم يرد أعلاه ، هل من أفكار حول هذا؟ لا تقصد أن تخطو على أصابع قدم أي شخص ، على الرغم من ذلك - إذا أجرى ميسلاف هذه المكالمات ، فلا أريد تجاوزه :)

يجب أن تكون الرسالة أفضل. على الرغم من ذلك ، كما قلت ، لن يعمل أي من البرامج الوسيطة في الواقع بدون محول. لذا ، فإن تحسين رسالة الخطأ على وجه التحديد لهذه البرامج الوسيطة يترك حالات فشل مشفرة أخرى في البرامج الوسيطة الأخرى.

يجب أن يكون الحل المناسب هو أن Faraday يجهض مبكرًا عندما لا يشتمل كائن Connection على محول في المكدس. الرجاء الاشتراك بواحدة من # 47 ، # 121 ، # 170

mislav Aha ، أشكركم على التوضيح!

أعتقد أنني سأحاول تقديم طلب سحب فقط لتحسين رسالة الخطأ من المسجل - يبدو أنه قد يكون تغييرًا بسيطًا إلى حد ما من شأنه تحسين مشكلة مسكتك المشتركة. آمل أن يكون هذا جيدًا.

قد أنظر في الإصلاح المناسب أيضًا ، لكنه يبدو أكثر صعوبة ، لذلك قد لا أملك الوقت أو المهارة لتحقيق ذلك.

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