Подходящее место для хранения глобальных переменных (не констант!) в Rails 3

Я просмотрел связанные вопросы, но не смог найти то, что мне было нужно, поскольку большинство вопросов спрашивали, где хранить константы, а не просто глобальные переменные.

Я хочу, чтобы моя CMS случайным образом выбирала цветовую схему одним нажатием кнопки. Прежде чем пользователь автоматически сгенерирует цветовую схему, я хотел бы иметь возможность загрузить цветовую схему по умолчанию из ряда переменных. Какое хорошее место для таких вещей?

До сих пор я хранил настройки в базе данных, но мне интересно, есть ли простой способ. По какой-то причине размещение их ни в environment.rb, ни в initializers.rb не помогает.

Я хотел бы отметить, что я хочу, чтобы эти переменные были редактируемыми; константы не годятся.


person dsp_099    schedule 07.06.2011    source источник


Ответы (1)


Вы хотите, чтобы пользователь менял только цветовую схему своей учетной записи? Если это так, этот параметр должен быть сохранен в базе данных, связанной с этим пользователем.

Если вы сохраните значение в константе Ruby, например $color, в config/initializers/color.rb, оно будет установлено и переустановлено для всех пользователей, использующих этот запущенный экземпляр приложения Rails. Скажем, у вас есть три производственных процесса Rails, работающих на веб-сервере, таком как Thin, 33% (в зависимости от вашего балансировщика нагрузки) пользователей увидят один и тот же цвет.

$color в инициализаторе должен работать локально, но вам придется перезапустить сервер после создания переменной.

person Dan Croak    schedule 07.06.2011