Вот как я справляюсь с такими вещами, но это хорошая идея, если количество ключей не слишком велико.
1.Создайте модель для доступа к вашей БД следующим образом:
приложение / модели / config_table.rb
class ConfigTable < ActiveRecord::Base
# whatever you need here
end
2.Создать инициализатор
конфиг / Инициализаторы / admin_config.rb
class AdminConfig
# uncomment this if in development
#unloadable
# I assume you have the fields key/value in your
# ConfigTable you may need to change this
def self.all
# create a cached hash
@cache ||= ConfigTable.all.inject({}) do |hsh, c_config|
hsh[c_config.key.to_sym] = c_config.value
hsh
end
end
def self.get(key)
self.all[key.to_sym]
end
def self.[](key)
self.all[key.to_sym]
end
end
Примеры использования (в любом месте вашего приложения):
AdminConfig.get(:hostname)
AdminConfig.get('hostname')
AdminConfig[:hostname]
AdminConfig['hostname']
Если вам необходимо перезагрузить вашу Конфигурацию из-за изменений, вам придется перезапустить все запущенные экземпляры приложения. Возможно, вам придется изменить наименования таблицы / столбцов, конечно:)
Если вам нужно решение для больших наборов ключей / значений, я рекомендую вам сохранить его в кеше Rails и, возможно, использовать redis-store:)
Веселись