2012-06-18 3 views
8

Я хочу иметь общую конфигурацию с настройками, которые не меняются в разных средах (разработка и производство). Я знаю, что могу настроить глобальный файл settings.py (например, лимиты sql), но, насколько мне известно, пирамида требует, чтобы определенные параметры находились в ini-файле при запуске (например, пути к каталогу шаблона).Как использовать общую конфигурацию ini (между разработкой и производством) в пирамиде?

Могу ли я, и если да, то как это сделать в пирамиде?

ответ

16

Существует несколько возможных вариантов, не выходя за пределы INI-ограничений PasteDeploy. Однако, прежде всего, осознайте красоту модели файла INI - это базовая способность создавать несколько файлов с различными настройками/конфигурациями. Да, вы должны синхронизировать их, но они - просто настройки (без логики), так что это не должно быть непреодолимым.

В любом случае, PasteDeploy supports a default section, который унаследован разделами [app:XXX]. Таким образом, вы можете размещать общие настройки там и иметь разные разделы [app:myapp-dev] и [app:myapp-prod].

# settings.ini 

[DEFAULT] 
foo = bar 

[app:myapp-dev] 
use = egg:myapp 

[app:myapp-prod] 
use = egg:myapp 

set foo = baz 

Это может быть запущена через

env/bin/pserve -n myapp-dev settings.ini 

Другой вариант заключается в использовании нескольких файлов конфигурации.

# myapp.ini 

[app:myapp-section] 
use = egg:myapp 

foo = bar 

# myapp-dev.ini 

[app:main] 
use = config:myapp.ini#myapp-section 

foo = baz 

# myapp-prod.ini 

[app:main] 
use = config:myapp.ini#myapp-section 

Это может быть запущена через

env/bin/pserve myapp-prod.ini 

Если вы не хотите использовать PasteDeploy (INI-файлы), вы можете сделать что-то в Python, но есть реальные преимущества этой конфигурации является простым.

Смежные вопросы