2012-06-11 5 views

Antwort

15

Pyramid INI Dateien können arbitrary configuration entries enthalten. Warum also nicht ein Flag in Ihre Dateien aufnehmen, das zwischen Produktions- und Entwicklungsbereitstellungen unterscheidet?

Ich würde es so machen; in Ihrer Produktion INI-Datei:

[app:main] 
production_deployment = True # Set to False in your development .ini file 

Pässe dieser Wert auf den Pyramid-Konfigurator:

def main(global_config, **settings): 
    # ... 
    from pyramid.settings import asbool 
    production_deployment = asbool(settings.get(
       'production_deployment', 'false')) 
    settings['production_deployment'] = production_deployment 
    config = Configurator(settings=settings) 

können Sie nun Zugriff auf die Einstellungen von fast überall in der Pyramide Code. Zum Beispiel in einem Request-Handler:

settings = request.registry.settings 
if settings['production_deployment']: 
    # Enable some production code here. 

Allerdings würde ich auch mehr feinkörnigen Einstellung in diesem Fall benutzen; eine Markierung zum Aktivieren von Google Analytics, eine zum Reduzieren von Ressourcen usw. Auf diese Weise können Sie jede einzelne Einstellung in Ihrer Entwicklungsumgebung testen, Komponententests für diese Schalter usw. schreiben.

+0

Sweet bro! Danke für diese Tipps –

3

Ich setze diese Art von Ding als eine Umgebungsvariable wie etwa PYRAMID_ENV, die über os.environ angesehen werden kann. Zum Beispiel im Code:

import os 

pyramid_env = os.environ.get('PYRAMID_ENV', 'debug') 

if pyramid_env == 'debug': 
    # Setup debug things... 
else: 
    # Setup production things... 

Dann können Sie die Variable in dem Init-Skript gesetzt oder beim Starten des Servers:

PYRAMID_ENV=production python server.py 

Docs über den Zugang zu Umweltvariablen: http://docs.python.org/library/os.html#os.environ

Verwandte Themen