Можно ли загрузить дополнительные файлы конфигурации из внешнего файла конфигурации в Grails? - PullRequest
2 голосов
/ 18 августа 2011

Гипотетическая ситуация:

Я загрузил приложение Grails из Интернета в виде файла WAR, foo.war.В документации говорится, что я могу поместить свою собственную пользовательскую конфигурацию в /foo.groovy, потому что этот путь включен в grails.config.locations в Config.groovy.Я могу сбросить все свои пользовательские настройки в этот файл, и жизнь в порядке.

Как, вот моя проблема ... Конфигурация FooApp большая и волосатая, и я не хочу, чтобы все это было в одном файле,Я хотел бы разбить его на /bar.groovy и /baz.groovy, чтобы все было организовано.Есть ли способ указать что-то в /foo.groovy, чтобы FooApp также взял /bar.groovy и /baz.groovy и обработал их?

Я уже пробовал добавлять пути к grails.config.locations в /foo.groovy, ноGrails это не понравилось и бросило неприятное исключение при запуске.Я не уверен, какой другой подход выбрать.

Редактировать для ясности:

grails-app/conf/Config.groovy выглядит так:

grails.config.locations = ["file:/foo.groovy"]

Теперь без изменения grails-app/conf/Config.groovyи только путем изменения /foo.groovy есть ли способ загрузить больше файлов конфигурации, кроме /foo.groovy?

1 Ответ

2 голосов
/ 13 июля 2012

Вы можете отбросить дополнительные файлы конфигурации в foo.groovy:

foo.groovy

port {
  to {
    somewhere=8080
    another {
      place=7070
    }  
  }  
}
host = new ConfigSlurper().parse(new File("bar.groovy").toURL())

bar.groovy

to {
  somewhere="http://localhost/"
  another {
    place="https://another.place.com/"
  }
}

Итак, в вашем приложении у вас есть:

assert grailsApplication.config.port.to.somewhere == 8080
assert grailsApplication.config.port.to.another.place == 7070
assert grailsApplication.config.host.to.somewhere == "http://localhost/"
assert grailsApplication.config.host.to.another.place == "https://another.place.com/"
...