2015-07-23 3 views

ответ

1

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

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

Обновлено (основано на комментарии)

В вашем комментарии вы объясните, что вы пытаетесь использовать переключатель функции плагину (который предназначен для запуска времени и не постоянен). Рассматривая source code для плагина, вы должны иметь возможность создать собственную службу, которая будет загружать настройки из базы данных и переключать/обновлять настройки переключателя функций. Вот простой пример/пример:

package example 

import org.springframework.beans.factory.InitializingBean 

class MyExampleService implements InitializingBean { 
    def grailsApplication 
    void afterPropertiesSet() { 
    // here is where you would do whatever you needed to load the settings 
    grailsApplication.config.features['somefeature'].enabled = true 
    grailsApplication.config.features['otherfeature'].enabled = false 
    } 
} 

Это должно по крайней мере дать вам представление.

В качестве альтернативы вы можете просто написать все это в Bootstrap.groovy, которое также может получить доступ к источнику данных/GORM.

+0

Ну, есть плагин Feature Switch для grails (https://github.com/antony/grails-feature-switch/blob/master/README.markdown) ... Но это не настойчиво, поэтому каждый раз, когда я перезапустите сервер, значение переходит к значению по умолчанию. Я хотел сделать этот плагин постоянным. Проблема в том, что он настроен на Config.groovy ... У вас есть ссылка на ту информацию, которую вы сказали о том, как Config обрабатывается до источника данных? – Igor

+0

См. Мое редактирование/обновление. –

+0

Я видел ваше обновление. Это действительно сработало. Спасибо огромное! В любом случае, чтобы переопределить контроллер? Потому что теперь мне нужно обновить базу данных, когда пользователь переключает эту функцию с экрана, который они предоставляют с localhost: 8080/your-app/admin/features – Igor