У меня есть приложение только для API, встроенное в Rails, которое требует зашифрованный логин для получения токена. Впоследствии запросы на данные от API аутентифицируются по значению токена в заголовке запроса.
У меня есть другое приложение Rails, которое использует этот API для нескольких разных вещей. В настоящее время он настроен на проверку подлинности перед выполнением любого запроса, который получает токен для этого запроса.
Это нормально, за исключением того, что оно устанавливает потенциальное состояние гонки, как только приложение становится доступным для общественности. Вполне возможно, что два запроса могут поступить практически одновременно, дважды сбросив токен, сделав один из последующих запросов на получение данных токеном, который больше не действителен.
Я хотел использовать переменную $ global для хранения токена и даты / времени его обновления, чтобы он всегда был доступен для всех пользователей и обновлял токен только в том случае, если ему исполнилось несколько часов.
Это решило бы проблему состояния гонки, но из всего, что я читаю, ИСПОЛЬЗОВАНИЕ ГЛОБАЛЬНЫХ ПЕРЕМЕННЫХ В РЕЙЛЯХ ПЛОХО. Мне кажется, этот вариант использования является исключением, но я хочу сделать это правильно.
Является ли мой единственный вариант сохранения этих значений в моей собственной базе данных? Кажется глупым настраивать модель данных для таблицы, которая будет содержать только два столбца и две строки, но я не знаю, является ли это Rails Way (TM) или Best Way.
Любой совет приветствуется.