Рассмотрим этот сценарий. У нас есть внутреннее приложение Rails 2, которое подключается к сайту поставщика с помощью Savon (библиотека Ruby SOAP). Соединение основано на аутентификации с использованием имени пользователя и пароля. Пароль меняется каждые 30 дней. Прямо сейчас - каждые 30 дней разработчики должны заходить на сайт вендора, обновлять пароль и возвращаться к нашему внутреннему приложению rails, обновлять пароль, передавать приложение на веб-сервер и перезапускать пассажира.
Мы храним пароль в виде константы в файле среды вместе с парой дополнительных констант, специфичных для сети. Мы как бы хотим переложить эту ответственность на менеджера по обслуживанию клиентов, чтобы она обновляла пароль каждые 30 дней, переходила к небольшой форме в приложении и обновляла пароль.
Как лучше всего хранить этот пароль? Очевидно, мы не можем сделать CONSTANT в файле среды и продолжать перезагружать приложение. Но в то же время создание модели для хранения одного пароля в отдельной таблице кажется излишним, поскольку часть приложения, выполняющая запрос к сайту поставщика, выполняет около 1000 запросов в день и должна быть довольно быстрой, это означает, что хранение этого пароля в таблице требует дополнительного запроса каждый раз, когда выполняется запрос. Конечно, для нашего тома это не имеет большого значения, но теоретически, что является лучшим \ эффективным решением этой проблемы, кроме того, что мы делаем сейчас, загружая его в память при запуске приложения?