Модульная организация файлов конфигурации пирамиды/вставки

У меня есть приложение-пирамида, использующее ini-файл пастера, размещенный через uwsgi. Я хочу размещать разные экземпляры (например, разработку, постановку, производство), в идеале, вообще не касаясь файла конфигурации. Очевидно, что для разных экземпляров нужны разные настройки. Мой подход был примерно таким:

[app:base]
sqlalchemy.url = some/connection/string/%(instance)s

[app:development]
instance = development

[app:production]
instance = production

Это не работает, потому что instance еще не определено, когда определено sqlalchemy.url. Я пытался внедрить instance как-то извне, но безуспешно. Я не могу получить доступ к каким-либо переменным среды. Я также пытался передать значения через uwsgi_param из Nginx, но не смог заставить его работать.

Как упорядочить ini-файлы paster по модульному принципу, чтобы не приходилось дублировать настройки?


person Achim    schedule 03.09.2013    source источник
comment


Ответы (1)


Вы можете использовать URL-адрес «config:», чтобы включить настройки из другого файла.

В "общий.ini"

[app:myapp]
use = egg:myapp

В "разработке.ini"

[app:main]
use = config:shared.ini#myapp
a = 2

В "production.ini"

[app:main]
use = config:shared.ini#myapp
a = 3

Вот некоторый реальный код, использующий этот шаблон:

https://github.com/Pylons/sdidev/blob/master/etc/development.ini

person Chris McDonough    schedule 04.09.2013
comment
Это не позволит расширить переменную, приведенную в моем примере. - person Achim; 06.09.2013