Доступ к свойствам Grails из файла среды - PullRequest
0 голосов
/ 10 августа 2011

В моем файле Config.groovy я объединяю файлы свойств следующим образом:

grails.config.locations << "file:${userHome}/environment.properties" << "file:${userHome}/passwords.properties"

У меня есть две проблемы:

  1. При автоматическом подключении в слое Service с GrailsApplication Iмогу получить свойства, определенные в Config.groovy, НО НЕ те свойства, которые определены в файлах
  2. Я не могу автоматически подключить GrailsApplication в моих работах (используя плагин Quartz)

Может кто-нибудь пролить свет на эти проблемы

Ответы [ 2 ]

2 голосов
/ 11 августа 2011

Что мне делать, так это иметь внешний файл Config.groovy, например: MyConfig.groovy

В конце стандартного файла grails Config.groovy у меня есть следующее:

def ENV_NAME = "MY_EXTERNAL_CONFIG"
if(!grails.config.locations || !(grails.config.locations instanceof List)) {
    grails.config.locations = []
}
if(System.getenv(ENV_NAME)) {
    grails.config.locations << "file:" + System.getenv(ENV_NAME)
} else if(System.getProperty(ENV_NAME)) {
    grails.config.locations << "file:" + System.getProperty(ENV_NAME)
} else {
    println "No external Configs found."
}

Так что теперь вы можете иметь файл MyConfig.groovy в любом месте производственной среды (например) и затем установить системную переменную среды, чтобы она указывала на этот файл (или передать его в качестве параметра для startup.sh), перед тем как запустить tomcat:

MY_EXTERNAL_CONFIG="/home/tomcat/configs/MyConfig.groovy"
export MY_EXTERNAL_CONFIG

Вот и все. Теперь у вас есть внешний файл MyConfig.groovy. Свойства в нем доступны из вашего приложения Grails, так как они были частью стандартного Config.groovy

import org.codehaus.groovy.grails.commons.*
//... 
ConfigurationHolder.config.foo.bar.hello
0 голосов
/ 10 августа 2011

как насчет того, чтобы попробовать это!

...