2012-06-11 12 views

Respuesta

15

Pirámide INI los archivos pueden contener arbitrary configuration entries, ¿por qué no incluir un indicador en sus archivos que distinga entre implementaciones de producción y desarrollo?

Lo haría así; en su producción archivo ini:

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

pasar este valor a la Pirámide del configurador:

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) 

Ahora puede acceder a la configuración desde casi cualquier parte del código de la pirámide. Por ejemplo, en un controlador de solicitudes:

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

Sin embargo, también usaría configuraciones más detalladas en este caso; una bandera para habilitar Google Analytics, una para minificar recursos, etc. De esta forma puede probar cada configuración individual en su entorno de desarrollo, escribir pruebas de unidades para estos conmutadores, etc.

+0

Sweet bro! Gracias por esos consejos –

3

Establecí este tipo de cosas como una variable de entorno llamada algo así como PYRAMID_ENV que se puede ver a través de os.environ. Por ejemplo en el código:

import os 

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

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

entonces se puede establecer la variable en el script de inicio o al iniciar el servidor:

PYRAMID_ENV=production python server.py 

Docs en el acceso a las variables ambientales: http://docs.python.org/library/os.html#os.environ

Cuestiones relacionadas