Обновление Faraday gem: RuntimeError: Адаптер должен быть установлен с помощью метода `adapter`, а не` use` - PullRequest
0 голосов
/ 30 сентября 2019

Я относительно новичок в RoR, и теперь я хочу обновить Фарадей с 0.15.4 до 0.16.2, и я думаю, что мне нужно изменить способ вставки Фарадея в стек промежуточного ПО. Но как мне это сделать?

После обновления драгоценного камня Фарадея я получаю следующую ошибку от Minitest:

RuntimeError: Adapter should be set using the `adapter` method, not `use`

Обычно поиск точного сообщения об ошибке мне подходит, к сожалению на этот разМне повезло меньше, я нашел только буквальную строку в коде Фаради:)

Эта ошибка возникает у Фарадея, когда она используется, как показано ниже, в одном из моих тестовых файлов:

def extend_middleware(builder)
  builder.use Ahora::Middleware::RequestLogger, SemanticLogger[Reader]
  builder.use Faraday::Adapter::Typhoeus
end
* 1010У меня сложилось впечатление, что решение должно быть относительно простым, изменив только строку builder.use выше. Но я понятия не имею, как преобразовать это в метод adapter, как указано в сообщении об ошибке. Мне бы очень помогло, если бы кто-то мог указать на разницу между методами «использования» и «адаптера» (я бы хотел понять проблему!) И, возможно, указать мне на решение: D

1 Ответ

0 голосов
/ 30 сентября 2019

Есть документ, который команда Фарадея поместила в сеть , чтобы помочь с любыми ошибками обратной совместимости с версии 0.15.4.

Есть раздел, касающийся вашей проблемы:

Чтобы указать адаптер, вы ДОЛЖНЫ использовать метод #adapter в компоновщике соединений. Если вы этого не сделаете, и ваш адаптер наследует от Faraday :: Adapter, тогда Faraday выдаст исключение. В противном случае Фарадей автоматически вставит адаптер по умолчанию в конец стека, в результате чего ваш запрос будет выполнен дважды.

class OfficialAdapter < Faraday::Adapter
  ...
end

class MyAdapter
  ...
end

# This will raise an exception
conn = Faraday.new(...) do |f|
  f.use OfficialAdapter
end

# This will cause Faraday inserting the default adapter at the end of the stack
conn = Faraday.new(...) do |f|
  f.use MyAdapter
end

# You MUST use `adapter` method
conn = Faraday.new(...) do |f|
  f.adapter AnyAdapter
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...