Мы поддерживаем несколько Rails-приложений, которые все создают аналогичную проблему, и у нас нет действительно хорошего решения: все эти приложения содержат модели, которые должны сделать API-вызов внешним службы в их жизненном цикле.Организация API-вызовов в обратных вызовах
Возможные случаи:
- Пользователя подписался на рассылке-абонентской-лист, при успешном создании
- Цен на предложение синхронизируется с внешней торговой системой после обновления
- Продукта обновляются в Search-индекс после обновления
Что мы exprienced к НЕ быть хорошим решением: Добавление этих кал ls к обратным вызовам модели after_*
. Поскольку это быстро ломает тесты, все фабрики теперь должны иметь дело с api-вызовами.
Я ищу хороший способ организовать эти API-вызовы. Как вы, ребята, это делаете?
Идеи мы придумали, которые я считал не настоящий идеал:
- Перемещение этих обратных вызовов к контроллеру. Теперь они легко забываются при создании объекта
- Истекает асинхронный рабочий для обработки api-call. Затем каждое - даже небольшое приложение - должно иметь накладные расходы на задержанную очередь заданий, например sidekiq.