Faraday: Помощь в написании промежуточного программного обеспечения

Созданный на 21 янв. 2014  ·  13Комментарии  ·  Источник: lostisland/faraday

Из документации мне кажется, что следующее должно работать. Но это не так. Документы плохи для написания промежуточного программного обеспечения. Вместо этого кто-нибудь может оказать некоторую помощь.

# play.rb
require 'faraday'

class MyMiddleware

  attr_reader :options

  def initialize(app, options={})
    <strong i="6">@app</strong> = app
    <strong i="7">@options</strong> = options
  end

  def call(env)
    @app.call(env)
  end

end

# This doesn't seem to work either, removing for now.
# Faraday.register_middleware :request, my_middlware: lambda { MyMiddleware }

client = Faraday.new do |conn|
  # conn.request :my_middleware, foo: :bar
  conn.request MyMiddleware, foo: :bar
end

response = client.get('http://jasonwaldrip.com/')
$ ruby play.rb
/Users/jwaldrip/.rbenv/versions/1.9.3-p484/lib/ruby/gems/1.9.1/gems/faraday-0.8.9/lib/faraday.rb:64:in `lookup_middleware': MyMiddleware is not registered on Faraday::Request (RuntimeError)
    from /Users/jwaldrip/.rbenv/versions/1.9.3-p484/lib/ruby/gems/1.9.1/gems/faraday-0.8.9/lib/faraday/builder.rb:146:in `use_symbol'
    from /Users/jwaldrip/.rbenv/versions/1.9.3-p484/lib/ruby/gems/1.9.1/gems/faraday-0.8.9/lib/faraday/builder.rb:100:in `request'
    from play.rb:19:in `block in <main>'
    from /Users/jwaldrip/.rbenv/versions/1.9.3-p484/lib/ruby/gems/1.9.1/gems/faraday-0.8.9/lib/faraday/connection.rb:65:in `initialize'
    from /Users/jwaldrip/.rbenv/versions/1.9.3-p484/lib/ruby/gems/1.9.1/gems/faraday-0.8.9/lib/faraday.rb:11:in `new'
    from /Users/jwaldrip/.rbenv/versions/1.9.3-p484/lib/ruby/gems/1.9.1/gems/faraday-0.8.9/lib/faraday.rb:11:in `new'
    from play.rb:18:in `<main>'

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

Полный простой пример будет иметь большое значение для документации.

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

Попробуйте conn.use вместо conn.request . Он пытается найти промежуточное ПО MyMiddleware в Faraday :: Request.

https://github.com/lostisland/faraday/blob/b8d90a59bafb8dd6e19488fae07945a7700f5664/lib/faraday/rack_builder.rb#L82 -L101

@technoweenie У нас должна быть лучшая документация по регистрации промежуточного программного обеспечения. Недавно мне пришлось сделать это здесь, и мне пришлось прочитать код, чтобы понять, как это сделать.

@jwaldrip Если вы зарегистрировали свое промежуточное ПО, вы могли бы сказать conn.request .

Если бы вы зарегистрировали свое промежуточное ПО, вы могли бы сказать conn.request.

Кроме того, вы должны использовать символ, с которым вы зарегистрировались, а не имя класса. Символы используются только как ярлык для включения полного имени класса. conn.request(:json) в основном совпадает с Faraday::Request::JSON .

У нас должна быть лучшая документация по регистрации промежуточного программного обеспечения.

: +1: Я оттолкнулся, потому что планировал полностью изменить систему промежуточного программного обеспечения.

@jwaldrip Правильно, это плохой пользовательский опыт. Он закомментировал строку, которая регистрирует промежуточное ПО под сокращением символа, но продолжал использовать conn.request setter, который, как мне кажется, работает только с сокращениями символов. Следовательно, промежуточное ПО найти не удалось.

Мы должны подумать, как это улучшить или, по крайней мере, получить более четкое сообщение об ошибке.

У меня все заработало, потребовалось некоторое время. Сообщите мне, могу ли я вообще помочь с документацией или доработкой промежуточного программного обеспечения.

Как выглядела ваша окончательная установка? @jwaldrip

Было ли что-нибудь написано по этому поводу? Я не смог найти ничего полезного, и несколько минут пришлось ломать голову, чтобы понять это.

@stefansedich не уверен, было ли какое-либо прямое продолжение или улучшение после этого обсуждения, но мы планируем проделать большую работу над документацией вместе со следующим основным выпуском (1.0), так что, надеюсь, это не будет проблемой в будущем снова.

Было бы здорово, если бы кто-нибудь опубликовал, как именно сейчас выглядит регистрация в этом выпуске.

@maxim Теперь у нас есть официальный веб-сайт с некоторой документацией по промежуточному программному обеспечению , но она все еще улучшается.

Короче говоря, request и response следует использовать только для зарегистрированного промежуточного программного обеспечения, если вам нужно внедрить специально созданное, проще всего вызвать .use .
Итак, в приведенном выше примере будет работать следующее:

client = Faraday.new do |conn|
  conn.use MyMiddleware, foo: :bar
end

Полный простой пример будет иметь большое значение для документации.

@maxim Теперь у нас есть официальный веб-сайт с некоторой документацией по промежуточному программному обеспечению, но она все еще улучшается.

Короче говоря, запрос и ответ следует использовать только для зарегистрированного промежуточного программного обеспечения, если вам нужно внедрить специально созданное, проще вызвать .use.
Итак, в приведенном выше примере будет работать следующее:

client = Faraday.new do |conn|
  conn.use MyMiddleware, foo: :bar
end

@iMacTia Этого нет в документации, но это очень важно. Возможно, это могло быть в https://lostisland.github.io/faraday/middleware/custom

@wilsonsilva, вы совершенно правы, это определенно будет хорошим улучшением 😅. Я удивлен, что это было упущено, если честно

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