Как правильно / лучше всего хранить конфигурацию Configatron в приложении Rails? - PullRequest
1 голос
/ 13 октября 2011

Я использую configatron gem для нового приложения на Rails, для которого используется ActiveRecord. Некоторые из моих настроек configatron установлены в файле, а некоторые извлекаются из БД, так как они будут время от времени меняться, вот несколько строк из моего configatron.rb

configatron.app.uptime.start = Time.now
configatron.email.signature = Setting.where(:keyname => "email_signature").first.value.to_s unless Setting.where(:keyname => "email_signature").first.nil?

Так как это приложение отправляет несколько электронных писем от нескольких почтовых программ - это хороший способ хранить эту глобальную конфигурацию в одном месте, а также сокращает поиск в БД для подписи. Если по какой-либо причине администратор сайта решает изменить его - он может сделать это через интерфейс веб-администратора, который обновит мою таблицу настроек (привязанную к настройке модели).

Это все весело и хорошо, но как лучше всего хранить configatron.rb? Прямо сейчас он сидит в моей папке инициализаторов. Это означает, что он будет загружаться один раз при запуске приложения - что хорошо, однако, если один из параметров изменится - администратор сайта решит настроить подпись электронной почты, чтобы упомянуть новый рекламный веб-сайт - чтобы изменения вступили в силу - мне нужно перезапустить приложение (работает пассажир - так просто touch tmp/restart.txt сделать из кода). Однако это означает, что будут сброшены и другие настройки configatron, которые я не буду сбрасывать (например, моя временная метка времени начала работы).

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

Спасибо.

Ответы [ 2 ]

1 голос
/ 30 сентября 2014

когда я помещаю configatron в инициализатор, переменные среды Rails загружаются перед загрузкой настроек configatron. В результате промежуточное программное обеспечение, загруженное в конфигурации Rails (config / environment / production.rb), не смогло использовать переменные configatron.

так что в итоге я загрузил его первым делом в environment.rb вместо

1 голос
/ 12 июля 2012

Я думаю, что поместить его в инициализатор - правильное место для его хранения.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...