Написать в config.groovy - PullRequest
       0

Написать в config.groovy

3 голосов
/ 13 сентября 2011

Я знаю, что можно читать значения из grails-app/conf/Config.groovy, но мне было интересно, можно ли также записывать значения?

что-то настолько простое, что это не меняет значения в Config.

def oldValue = grailsApplication.config.my.value 
assert oldValue == "oldValue"

def newValue = "newValue"
grailsApplication.config.my.value = newValue 
assert newValue == grailsApplication.config.my.value

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

Ответы [ 2 ]

2 голосов
/ 18 сентября 2011

Это, вероятно, не будет практичным, если я вас правильно понимаю.Вы действительно имеете дело с скомпилированным Config.class во время выполнения.Вы действительно хотите извлечь Config.groovy из вашей VCS, изменить его, зарегистрировать обратно, перекомпилировать и поиграться с Classloader, чтобы перезагрузить его?Единственный способ, который я нашел для этого, - это экстернализация их свойств базы данных или файла и управление состоянием во время выполнения для работы с обновлениями.

0 голосов
/ 17 сентября 2011

Я согласен с комментарием proflux. Config.groovy - это не то место, где нужно сохранять любые данные, сгенерированные вашим приложением, и хорошо, что то, что вы пытаетесь, не работает:)

Мне очень любопытно, почему вы не хотите сохранять эти значения в обычной базе данных (любого рода). Конечно, всегда есть возможность сохранить это где-нибудь в файле, путь которого вы можете настроить в Config.groovy. Но даже это мне кажется незначительным.

Почему бы не добавить класс домена в соответствии с этим:

class Setting{
  String key
  String value
  static constraints = {
    key(unique: true)
  }
}

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

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