Допустим, есть внешний API: someexternalsvc.org/products.json. Контроллер должен использовать эти данные, чтобы как-то обработать (например, построить по ним красивую табличку) и вывести пользователю. Понятно, что на каждый запрос дёргать внешний API растратно (трафик, кап на количество вызовов, да и данные обновляются редко), поэтому можно обновлять данные раз в 10 минут.
Как подобные вещи реализуются в продакшене?
Поскольку с rails почти не знаком, попробовал погуглить. Текущая догадка: нужно написать rake-таску, которая будет исполняться по внешнему таймеру (например, по cronу) и загружать json.
Где и как организовать хранение (кэширование) загруженных данных? Есть ли способ без записи в БД или в файлы (данных ~на пару Кб)?
Rails.cache.fetch с блоком как раз и пробует вытащить из кэша или заполняет его результатом блока.
Rails.cache.fetch("products", :expires_in => 10.minutes) do
JSON.parse RestClient.get('someexternalsvc.org/products.json')
end